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工具欄按鈕選擇想要在下一行停止的行。
.png)
例如,單擊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
- 評估一個表達