PyCharm入門第一步(二):除錯第一個Python應用程式
第2步:除錯您的第一個Python應用程式
找出問題的根源
PyCharm報告執行時錯誤:a ZeroDivisionError。深入研究一下程式碼,找出問題所在。這裡可以使用PyCharm偵錯程式來檢視程式碼中發生了什麼。要開始除錯,您必須先設定一些斷點。要建立斷點,只需單擊左側gutter:
接下來,單擊左側gutter中的播放圖示,在main旁邊,然後選擇Debug 'Car'。 PyCharm啟動除錯會話並顯示除錯工具視窗。
在Console選項中,輸入S:
如您所見,斷點標記變為藍色。這意味著已經達到了斷點; 請注意,此時尚未執行突出顯示的程式碼行。
單擊播放圖示以恢復指令碼執行。現在另一個斷點也出現了:預設情況下,PyCharm將停止程式碼中未捕獲的任何異常,並且它將顯示帶閃電的斷點圖示。
控制檯還會顯示錯誤訊息。您還可以在偵錯程式中看到該值self.time等於零:
Surrounding code
為避免再次遇到同樣的問題,現在新增一個if語句來檢查時間是否等於零。為此,在方法average_speed中選擇語句return self.odometer / self.time,然後按Ctrl + Alt + T(Code | Surround with):
PyCharm建立一個stub if構造,讓你完成填充正確內容的任務。編輯後,得到以下內容:
詳細除錯
“除錯”工具視窗顯示框架, 變數和監視的專用窗格以及控制檯,其中顯示所有輸入和輸出資訊。如果希望控制檯始終可見,可以將其拖動到PyCharm視窗的一個邊緣。
Stepping
如果您希望逐行檢視程式碼的作用,則無需在每一行上設定斷點,您可以單步執行程式碼。看一下示例程式是什麼樣子:單擊播放圖示,轉到控制檯詢問汽車的平均速度(型別'S'),可以看到達到斷點。這時可以使用Stepping工具欄按鈕選擇想要在下一行停止的行。
例如,單擊Step Over 按鈕並看到藍色標記移動到下一行程式碼:
如果單擊Step Into按鈕,您將看到action = input("What should I do? [A]ccelerate, [B]rake, " "show [O]dometer, or show average [S]peed?").upper() 偵錯程式進入檔案parse.py:
但是,如果繼續使用Step Over 按鈕,您將看到您的應用程式只是傳遞到下一個迴圈:
如果您想專注於自己的程式碼,請使用Step Into My Code按鈕 - 這樣您就可以避免進入庫類。
Watching
PyCharm允許您觀察任何變數。只需要單擊Watches選項的工具欄中的+,然後輸入你想要觀看的變數的名稱-將其設定為 my_car.time。請注意,此處可以使用程式碼完成:
首先,您看到時間等於nil - 這意味著該變數尚未定義:
但是,當程式執行繼續到定義變數的作用域時,監視器將獲得以下檢視:
內聯除錯
您可能已經注意到另一個PyCharm功能,可以輕鬆檢視程式碼正在執行的操作: 內聯偵錯程式。一旦你遇到任何斷點,PyCharm就會在編輯器中向你顯示許多變數的值:
預設情況下啟用此內聯除錯功能。如果您沒有看到內聯除錯值,請使用除錯工具視窗中的設定圖示檢查它是否已啟用::
評估表示式
最後,您可以隨時評估任何表示式。
實際上,你可以用watch看到同樣的東西。使用評估表示式,您可以執行使用watch無法執行的操作:您可以更改內容。例如,如果輸入所需的里程錶值50,然後繼續單步執行指令碼,您將獲得以下資訊:
概要
- 找出問題的根源
- 設定斷點
- 逐步完成您的計劃
- 建立一個 watch
- 評估一個表達
相關文章
- PyCharm入門第一步(三):測試第一個Python應用程式PyCharmPython
- PyCharm入門第一步:建立並執行第一個Python專案PyCharmPython
- PyCharm入門第一步(四):建立和執行第一個Django專案PyCharmDjango
- pycharm 遠端除錯之二PyCharm除錯
- Flutter 應用程式除錯Flutter除錯
- 快速入門:構建您的第一個 .NET Aspire 應用程式
- Python 偵錯程式入門Python
- 前端除錯入門前端除錯
- 程式碼除錯-入門、實踐到原理除錯
- Pycharm遠端除錯PyCharm除錯
- Python安裝與Pycharm使用入門PythonPyCharm
- Kafka除錯入門(一)Kafka除錯
- 第一個 Angular 應用程式Angular
- Python 程式碼除錯—使用 pdb 除錯Python除錯
- Mybatis入門及第一個Mybatis程式MyBatis
- Pycharm的斷點除錯PyCharm斷點除錯
- repr除錯python程式除錯Python
- 5、Python入門____第一個Python專案:Hello WorldPython
- .NET高階除錯系列-Windbg除錯入門篇高階除錯
- 一、Python安裝與Pycharm使用入門PythonPyCharm
- 做一個可除錯的Android應用除錯Android
- Google Chrome除錯js入門GoChrome除錯JS
- Node 除錯工具入門教程除錯
- Spring Security系列之入門應用(二)Spring
- Docker入門-構建第一個Java程式DockerJava
- 【Android開發入門教程】二.Android應用程式結構分析Android
- Pycharm中Flask的除錯模式PyCharmFlask除錯模式
- React Native基礎&入門教程:除錯React Native應用的一小步React Native除錯
- mybatis入“坑”第一步MyBatis
- 國內外大廠都在使用Python,學習第一步Python3 的入門安裝!Python
- Electron 應用除錯指南除錯
- 使用 Eclipse 遠端除錯 Java 應用程式(mark)Eclipse除錯Java
- Xcode Instruments除錯swift入門教程XCode除錯Swift
- [part 1] 第一個 Django 應用程式Django
- 我的第一個Android應用程式Android
- python-pycharm報錯PythonPyCharm
- 從零開始學Python:19課-使用PyCharm開發Python應用程式PythonPyCharm
- Java程式中除錯Python程式方法Java除錯Python