1、引言
在編程過程中,調試作為一個不可或缺的步驟,幫助我們更高效地檢查和發現代碼中的錯誤。藉助Pycharm,我們不僅可以使用傳統的print()來輸出調試信息,還能更加輕鬆地使用「單步調試」來逐步分析程序執行過程,進一步檢查錯誤。因此,本篇文章將會介紹如何在Pycharm中使用單步調試技巧,以提高程序調試的效率。
2、正文
1、設置斷點
在我們運用Pycharm調試程序之前,首先要做的就是在需要調試的代碼行處設置斷點,即在需要暫停程序執行的位置下斷點。我們可以通過兩種操作方式來設置斷點:
(1)在需要設置斷點的代碼行左側單擊鼠標左鍵,設置一個紅色圓圈表示斷點;
(2)在需要設置斷點的代碼行處,使用快捷鍵Ctrl+F8(Windows系統)或Command+F8(Mac系統)來設置一個斷點。
下面的示例代碼中,我們使用快捷鍵Ctrl+F8在第4行設置了一個斷點:
def main(): lst = [1, 2, 3, 4, 5] for i in lst: # 在此行設置斷點 print(i) print('End') if __name__ == '__main__': main()
2、使用單步調試
一旦我們在需要調試的代碼行處設置了斷點,我們就可以啟動Pycharm的單步調試模式來檢查程序運行過程中的錯誤。在Pycharm中,單步調試包括以下三種模式:
(1)Step over:執行當前行,並跳過函數內的代碼;
(2)Step into:執行當前行,並進入函數內部的第一行代碼;
(3)Step out:程序退出當前函數,併到達調用當前函數的下一行代碼,通常用於跳出遞歸函數的執行。
可以通過以下方式啟動Pycharm的單步調試模式:
(1)在需要調試的代碼行上單擊右鍵,選擇「Debug ‘文件名.py’」選項;
(2)在Pycharm主界面的菜單欄中點擊「Run」-「Debug」-「Debug ‘文件名.py’」選項,或使用快捷鍵Ctrl+Shift+D(Windows系統)或Command+Shift+D(Mac系統)啟動調試模式。
在單步調試模式的命令面板中,我們可以看到以下四個按鈕:
(1)Resume Program:調試模式下恢復程序正常運行;
(2)Step Over:單步跳過當前行(函數不跳);
(3)Step Into:單步進入當前行所調用的函數;
(4)Step Out:跳出當前函數,執行調用該函數的下一條代碼。
下面的示例代碼中,我們使用「Step Over」、「Step Into」和「Step Out」三種模式來演示單步調試的過程:
def foo(): print("Step into foo") return 1 def main(): a = 1 + 2 b = a + foo() # 在此行設置斷點 print(b) if __name__ == '__main__': main()
當我們在第7行處設置斷點並執行單步調試時,程序會在第7行暫停,然後我們可以使用「Step Over」單步跳過當前行;使用「Step Into」單步進入函數foo()中的第一行代碼;使用「Step Out」跳出函數foo(),執行調用foo()的下一條代碼。
3、使用變量監視器
Pycharm還提供了一個非常有用的工具,名為「變量監視器」,可以在調試時實時查看程序中各個變量的值。通過打開「Watch」窗口,我們可以添加需要監視的變量名,每次程序執行到一個斷點時,「Watch」窗口會顯示該變量的值,從而幫助我們更好地理解程序的行為。
在Pycharm中,我們可以通過點擊下方的三個窗口之一的「Variables」打開「Watch」窗口,然後單擊右下角的「+」號來添加我們需要監視的變量名。在添加完變量名後,我們可以一步一步執行程序,觀察變量的值的變化情況。下面是一個示例代碼,在代碼的某行設置了斷點,同時在「Watch」窗口添加了變量a和lst:
def main(): lst = [1, 2, 3, 4, 5] a = 0 for i in lst: # 在此行設置斷點 a += i print(a) if __name__ == '__main__': main()
4、使用斷言
在程序開發中,我們經常需要使用斷言來檢查程序執行的正確性。Pycharm中的「 斷言 」功能可以讓我們更快捷地進行代碼驗證。使用「斷言」功能時,我們可以在代碼中使用assert語句來判斷是否滿足特定條件,並在滿足特定條件時繼續程序運行,不滿足特定條件時則提示錯誤信息並停止程序的執行。
我們可以在Pycharm中的設置中開啟「斷言」功能,並設置斷言失敗時的行為:停止程序運行(默認行為)或運行Python控制台。使用斷言需要注意的是,在完成調試後,需要在項目中將相關代碼的assert語句刪除;
下面的示例代碼中,我們在程序的第15行處添加了一個斷言,判斷lst中元素是否均為偶數:
def main(): lst = [2, 4, 6, 8, 9] # 在此處添加斷言 for i in lst: print(i) assert all([i%2 == 0 for i in lst]) if __name__ == '__main__': main()
3、小結
本篇文章重點介紹了如何在Pycharm中使用單步調試工具,讓開發者以更高效的方式進行程序的調試和檢測。通過本篇文章,我們了解了「設置斷點」、「單步調試」、「變量監視器」和「斷言」等工具的使用方法,希望對讀者有所幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/279704.html