如何使用 pdb 來性感 debug 你的 Python 代碼?

當你的代碼寫得多了,你總會出現這樣或者那樣的錯誤,有時候代碼突然可以用,有時候代碼又突然傻逼,有時候你只是離開一會,它就自動好了…就像女生的心思,總是讓人捉摸不透,總是那麼的魔幻。


如何使用 pdb 來性感 debug 你的 Python 代碼?


今天,小帥b來跟你說說 debug ,其實 debug 還是挺重要的,它除了可以幫助你自己發現代碼自身的 bug 之外,你還可以通過 debug 清楚的知道代碼的執行流程,比如變量是怎麼賦值的,數據是如何改變的等等,你都可以通過 debug 手段清楚的看到這些玩意的變化。


如何使用 pdb 來性感 debug 你的 Python 代碼?


除此之外,當你在學習一個新的庫或者新的代碼特性的時候,debug 也是常用的學習手段,因為你可以通過它更容易理解代碼為什麼是那樣寫的。


如何使用 pdb 來性感 debug 你的 Python 代碼?


接下來我會跟你說說 Python 內置的 debug 工具 pdb 的使用。


我們先來看看這樣的例子:


如何使用 pdb 來性感 debug 你的 Python 代碼?


很簡單,這裡我們定義了個方法,然後傳遞參數 name 返回一個字符串。


不過你可以看到第二行調了一個 breakpoint 方法,這是打斷點的意思,它是 Python 內置的,直接調用即可,接著我們來運行一下這個 py:


如何使用 pdb 來性感 debug 你的 Python 代碼?


這時候可以看到:


第一行:> 後面告訴我們打斷點的位置


第二行:-> 就是此刻 Python 執行到的暫停位置(因為我們在此前打了斷點了)


第三行:(pdb):意思是說我們可以使用 pdb 這個工具的相關命令了。


如果你不知道如何使用 pdb 的調試命令,可以輸入 help 得到相關的幫助:


如何使用 pdb 來性感 debug 你的 Python 代碼?


在這裡我跟你說下 pdb 常常會用到的幾個命令的意思:


1、p + 參數 :查看參數的值

2、n :單步跳過

3、s :單步進入

4、c :繼續執行

5、w :顯示上下文信息

6、a :查看函數的參數列表

7、ll : 列出當前的源碼

8、b : 設置斷點

9、q : 退出 debug


比如現在我們想知道參數 name 的值是什麼,我們就可以這樣:


如何使用 pdb 來性感 debug 你的 Python 代碼?


顯示參數:


如何使用 pdb 來性感 debug 你的 Python 代碼?


顯示上下文信息:


如何使用 pdb 來性感 debug 你的 Python 代碼?


執行當前代碼(單步進入):


如何使用 pdb 來性感 debug 你的 Python 代碼?


繼續執行:


如何使用 pdb 來性感 debug 你的 Python 代碼?


在 debug 的過程中,你還可以修改參數的值,比如把 name 直接改成 sb:


如何使用 pdb 來性感 debug 你的 Python 代碼?


如何使用 pdb 來性感 debug 你的 Python 代碼?


列出當前的源碼:


如何使用 pdb 來性感 debug 你的 Python 代碼?


我剛給你演示的這些是在 Python3.8 版本下執行的,如果你用的是 Python 3.7 以下的版本,是用不了 breakpoint 這個函數的:


如何使用 pdb 來性感 debug 你的 Python 代碼?


所以如果想要在 Python3.7 以下的版本使用 pdb ,那麼你就需要自行導入了,並且你要打斷點的話應該調用的是 set_trace():


如何使用 pdb 來性感 debug 你的 Python 代碼?


那麼這個時候,你就可以在 Python3.7 以下的版本使用 pdb 了:


如何使用 pdb 來性感 debug 你的 Python 代碼?


當然,你還可以什麼斷點都不設置,使用命令的方式執行 pdb ,比如我們把剛剛的斷點都去掉:


如何使用 pdb 來性感 debug 你的 Python 代碼?


接著我們通過 pdb 命令來執行它:


python3 -m pdb xxx.py


如何使用 pdb 來性感 debug 你的 Python 代碼?


這時候可以看到,它是直接從第一行開始打斷點:


如何使用 pdb 來性感 debug 你的 Python 代碼?


哦對了,如果你使用 VIM 編輯器的話,可以使用 repl 插件結合 ipdb 實現調試,像我這樣:


如何使用 pdb 來性感 debug 你的 Python 代碼?


ok,以上,希望對你有幫助,我們下回見,peace!


如何使用 pdb 來性感 debug 你的 Python 代碼?


分享到:


相關文章: