亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

在 PyCharm 里調試程序

前一節已經講了調試程序的準備工作,在設置斷點后,然后從選定的運行/調試配置開始,就可以啟動一個調試會話了。本節主要內容是講解如何逐步完成程序調試,如何監控調試信息及停止與暫停等相關功能。

1. 調試程序

  1. 在編輯器中打開所需的 Python 腳本,或在"Project"工具窗口中選擇文件。

  2. 從上下文菜單中選擇 “debug 腳本名”。Python 腳本的調試會話將從默認的臨時運行/調試配置開始,如果你已經配置永久的運行/調試配置為當前腳本,此時菜單顯示 “debug 配置名”。
    圖片描述
    Tips: 在前面章節已經講了如何添加運行/調試配置,在調試腳本前,可以增加新的配置。除此以外,在前面章節運行程序的方法入口也同樣適用于調試程序,在菜單中都會找到對應的調試選項。

  3. 調試會話啟動后,程序會在擊中的第一個斷點處掛起,PyCharm會自動打開Debug 工具窗口。會包括Debugger 與 Console 選項卡。
    圖片描述

  4. 在調試過程中, 可以通過工具欄按鈕暫停與恢復調試。對應的菜單 暫停: Run -> Debugging Actions -> Pause Program 恢復 Run -![>](//img.mukewang.com/wiki/5f1d2d4009ffeec115260808.jpg) Debugging Actions -> Resume Program
    圖片描述
    Tips: 如果對斷點執行的靜音操作(mute breakpoints), 所有斷點圖標將變為灰色,如下圖所示。在此種狀態調試程序,相當于沒有斷點直接運行了程序。如果要恢復斷點,再點擊一下靜音斷點的按鈕即可。
    圖片描述

  5. 當執行到達斷點或手動掛起程序時,可以通過分析棧幀來檢查應用程序。所有當前活動的幀都顯示在Debugger 工具窗口的"Frames"窗格中。這種場景多用于多線程的情況。(棧幀就是一個函數執行的環境。實際上可以簡單理解為:棧幀就是存儲在用戶棧上的每一次函數調用涉及的相關信息的記錄單元。)
    圖片描述

2. 分步調試程序

PyCharm 提供了一組步進操作,可以分步調試程序,步進按鈕位于調試工具窗口工具欄上。
圖片描述
下面從左到右分別介紹這些按鈕的作用:

  1. step over (F8): 單步執行,執行當前代碼行,并帶你到下一行,即使行中包含方法調用,將跳過方法的實現,不進入方法內部,直接移動到調用方方法的下一行。
  2. step into (F7): 單步執行,與step over 不同,如果包含方法調用可跳到當前執行點調用的方法內部當中去。
    下面分別演示了step over 與 step into
    圖片描述
  3. step into my code (??F7: Alt + Shift + F7) 調試時,你可能只專注于自己的代碼,對于系統模塊的方法并不打算進入,此時可點擊這個代替step into??聪旅娴睦觢ogger.xxx都是系統模塊logger的方法,而Solver()是自定義類,當點擊step into my code 時只會進入自定義類的方法中。
    圖片描述
  4. force step into: 強制調試器跳到當前執行點中調用的方法。對于調試python 程序,大多數情況下這個按鈕是不可用狀態,不是很常用。
  5. step out (?F8): 單擊此按鈕可使調試器退出當前方法,并執行其后執行的行返回到上一層。 下面的例子先進入方法內部,然后step out 回到主程序,再點擊step out, 直接跳到下一個斷點。
    圖片描述
  6. Run to Cursor(? F9: Alt + F9) 繼續執行,直到達到光標所在行的位置停止。在調試過程中,你點擊代碼中任意一行,然后點擊這個按鈕,調試器就會直接跳到這行,相當給這行加了一個臨時斷點。
    圖片描述

3. 小結

本節具體介紹如何調試代碼,查看調試信息,對于步進工具按鈕在講解過程中為了便于理解,都是直接點擊工具欄按鈕,但在實際工作中,還是建議使用快捷鍵,這將有助于提高調試程序的效率。涉及的有些快捷鍵可能會與自身操作系統快捷鍵沖突,請打開 PyCharm/File -> Preference/Settings 增加自定義快捷鍵。
圖片描述
圖片描述