工欲善其事,必先利其器。無論你的 IDE 是 IntelliJ IDEA、Pycharm、WebStorm、GoLang、還是PhpStorm ,調試器都是標配。在遇到有問題的程序時,合理的利用調試器的跟蹤和斷點技巧,可以很快的定位出問題原因。下面讓我們以 Pycharm 為例,一起來系統的學習下 IDE 的調試技巧吧。
01.Debug 運行方式
在代碼所在行號處左擊鼠標,就會設置一個行斷點。點擊 Pycharm 右上角的小蟲子圖標按鈕,就會以 DeBug 的方式運行代碼。下面是 DeBug 工作界面的簡單介紹。

02.菜單按鈕功能介紹
平常 Debug 代碼,常用到的一些調試按鈕如下,藍顏色的字體是按鈕的名稱:

1).Resume Programe:
恢復程序,比如,你在第 12 行和 16 行有兩個斷點,當前運行至第 12 行,按 Resume Programe ,則運行到下一個斷點(即第 16 行);

2).Step Over:
一行一行地往下走,如果這一行上有方法, 不會進入方法。例如下面第 17 行代碼有自己的實例方法,點擊 Step Over 按鈕調試代碼就不會進入這個實例方法。

3).Step into:
強制步入,能進入任何方法,查看底層源碼的時候可以用這個進入官方類庫的方法。
4).Step Into My Code
為單步進入,如果當前行有自定義的方法,會進入方法內部,但不會進入官方類庫的方法,效果如下:

如果大家在學習中遇到困難,想找一個 python 學習交流環境,可以加入我們的python裙,關注小編,並私信“01”即可進裙,領取python學習資料,會節約很多時間,減少很多遇到的難題。
03.常用的 DeBug 小技巧
1).斷點條件調試
有這樣一個場景,代碼 DeBug 的時候,我想知道下面代碼 index 為 10 時, date_1的值是什么,正常來說要 代碼 DeBug 循環 10 次,很不方便。

在 IDE 中有個條件斷點,只需設置好變量條件,只有當某個變量等於你設置的條件的值時,斷點就會自動停下。首先右擊第 24 行的斷點,給 Conditon 設置變量條件 index == 10,並點擊 Done 保存設置。

當 index 的值為 10 時,DeBug 就會自動停下,效果如下圖:

2).計算表達式
當我們 Debug 某個方法時,有時候會忘了傳入某個參數或者傳錯了,這個時候又不想重新Debug,就可以通過計算表達式來設置某個變量的值,如下圖,發現 day_int = 367 不是期望的值,可以鼠標右擊下面藍色的 day_int , 選擇 Set Value, 對 day_int 臨時修改值

下面的代碼程序會根據重新賦的值向下運行,可以看到變量 num_30 的值是 200 整除 30 的結果。

3). 多線程 調試
有時候發現對多線程並發代碼無法調試, 並不會所有斷點都走到,代碼中 87 行的 args 里的變量給了 6個 值, 線程 並發數量設置為 3 個,第 71 行的斷點調試我只循環了 2 次,正常來說應該循環 6 次,如下圖:

出現上面的情況是因為 IDE 在 Debug 時默認阻塞級別是 Thread,解決辦法是將它的阻塞級別改為 All, 阻塞其它線程,只有在當前調試線程走完時才會走其它線程。配置方法是右擊斷點,Suspend 的值改為 All ,再點擊 Make Default, 最好點擊 Done 保存設置。

修改后運行的效果如下:

辛苦熬夜整理的debug 技巧就分享到這里,原創不易,歡迎小伙伴們在評論區留言吱一聲
source: https://sa.sogou.com/sgsearch/sgs_tc_news.php?req=8_Yu-AnjmenJmrXbdAO5fpQBjofjKE7GK_gHvkpCgkA=&user_type=1