在 PyCharm 里調(diào)試程序
前一節(jié)已經(jīng)講了調(diào)試程序的準(zhǔn)備工作,在設(shè)置斷點(diǎn)后,然后從選定的運(yùn)行/調(diào)試配置開始,就可以啟動一個調(diào)試會話了。本節(jié)主要內(nèi)容是講解如何逐步完成程序調(diào)試,如何監(jiān)控調(diào)試信息及停止與暫停等相關(guān)功能。
1. 調(diào)試程序
-
在編輯器中打開所需的 Python 腳本,或在"Project"工具窗口中選擇文件。
-
從上下文菜單中選擇 “debug 腳本名”。Python 腳本的調(diào)試會話將從默認(rèn)的臨時運(yùn)行/調(diào)試配置開始,如果你已經(jīng)配置永久的運(yùn)行/調(diào)試配置為當(dāng)前腳本,此時菜單顯示 “debug 配置名”。

Tips: 在前面章節(jié)已經(jīng)講了如何添加運(yùn)行/調(diào)試配置,在調(diào)試腳本前,可以增加新的配置。除此以外,在前面章節(jié)運(yùn)行程序的方法入口也同樣適用于調(diào)試程序,在菜單中都會找到對應(yīng)的調(diào)試選項(xiàng)。 -
調(diào)試會話啟動后,程序會在擊中的第一個斷點(diǎn)處掛起,PyCharm會自動打開Debug 工具窗口。會包括Debugger 與 Console 選項(xiàng)卡。

-
在調(diào)試過程中, 可以通過工具欄按鈕暫停與恢復(fù)調(diào)試。對應(yīng)的菜單 暫停:
Run -> Debugging Actions -> Pause Program恢復(fù)Run - Debugging Actions -> Resume Program

Tips: 如果對斷點(diǎn)執(zhí)行的靜音操作(mute breakpoints), 所有斷點(diǎn)圖標(biāo)將變?yōu)榛疑?,如下圖所示。在此種狀態(tài)調(diào)試程序,相當(dāng)于沒有斷點(diǎn)直接運(yùn)行了程序。如果要恢復(fù)斷點(diǎn),再點(diǎn)擊一下靜音斷點(diǎn)的按鈕即可。

-
當(dāng)執(zhí)行到達(dá)斷點(diǎn)或手動掛起程序時,可以通過分析棧幀來檢查應(yīng)用程序。所有當(dāng)前活動的幀都顯示在Debugger 工具窗口的"Frames"窗格中。這種場景多用于多線程的情況。(棧幀就是一個函數(shù)執(zhí)行的環(huán)境。實(shí)際上可以簡單理解為:棧幀就是存儲在用戶棧上的每一次函數(shù)調(diào)用涉及的相關(guān)信息的記錄單元。)

2. 分步調(diào)試程序
PyCharm 提供了一組步進(jìn)操作,可以分步調(diào)試程序,步進(jìn)按鈕位于調(diào)試工具窗口工具欄上。

下面從左到右分別介紹這些按鈕的作用:
- step over (F8): 單步執(zhí)行,執(zhí)行當(dāng)前代碼行,并帶你到下一行,即使行中包含方法調(diào)用,將跳過方法的實(shí)現(xiàn),不進(jìn)入方法內(nèi)部,直接移動到調(diào)用方方法的下一行。
- step into (F7): 單步執(zhí)行,與step over 不同,如果包含方法調(diào)用可跳到當(dāng)前執(zhí)行點(diǎn)調(diào)用的方法內(nèi)部當(dāng)中去。
下面分別演示了step over 與 step into

- step into my code (??F7: Alt + Shift + F7) 調(diào)試時,你可能只專注于自己的代碼,對于系統(tǒng)模塊的方法并不打算進(jìn)入,此時可點(diǎn)擊這個代替step into??聪旅娴睦觢ogger.xxx都是系統(tǒng)模塊logger的方法,而Solver()是自定義類,當(dāng)點(diǎn)擊step into my code 時只會進(jìn)入自定義類的方法中。

- force step into: 強(qiáng)制調(diào)試器跳到當(dāng)前執(zhí)行點(diǎn)中調(diào)用的方法。對于調(diào)試python 程序,大多數(shù)情況下這個按鈕是不可用狀態(tài),不是很常用。
- step out (?F8): 單擊此按鈕可使調(diào)試器退出當(dāng)前方法,并執(zhí)行其后執(zhí)行的行返回到上一層。 下面的例子先進(jìn)入方法內(nèi)部,然后step out 回到主程序,再點(diǎn)擊step out, 直接跳到下一個斷點(diǎn)。

- Run to Cursor(? F9: Alt + F9) 繼續(xù)執(zhí)行,直到達(dá)到光標(biāo)所在行的位置停止。在調(diào)試過程中,你點(diǎn)擊代碼中任意一行,然后點(diǎn)擊這個按鈕,調(diào)試器就會直接跳到這行,相當(dāng)給這行加了一個臨時斷點(diǎn)。

3. 小結(jié)
本節(jié)具體介紹如何調(diào)試代碼,查看調(diào)試信息,對于步進(jìn)工具按鈕在講解過程中為了便于理解,都是直接點(diǎn)擊工具欄按鈕,但在實(shí)際工作中,還是建議使用快捷鍵,這將有助于提高調(diào)試程序的效率。涉及的有些快捷鍵可能會與自身操作系統(tǒng)快捷鍵沖突,請打開 PyCharm/File -> Preference/Settings 增加自定義快捷鍵。


XuXinHong ·
2025 imooc.com All Rights Reserved |