python 自帶調試工具 pdb 可通過插入 import pdb; pdb.set_trace() 或命令行 python -m pdb your_script.py 啟動。常用命令包括:1. n 執行下一行;2. s 單步進入函數;3. c 繼續執行;4. l 顯示當前代碼;5. p 變量名 打印變量;6. q 退出調試。可通過 b 行號 設置斷點,w 查看堆棧,u/d 切換堆棧幀,實現高效問題定位。
調試 Python 代碼時,很多人第一反應是加一堆 print 輸出變量值。其實 Python 自帶了一個非常實用的調試工具:pdb(Python Debugger)。它能讓你一行一行地執行代碼、查看變量狀態、設置斷點,非常適合排查邏輯錯誤和復雜問題。
怎么啟動 pdb?
最簡單的辦法就是在你想開始調試的地方加上這句:
import pdb; pdb.set_trace()
程序運行到這里就會暫停,進入交互式調試模式。你就可以輸入命令查看當前上下文了。
立即學習“Python免費學習筆記(深入)”;
如果你不想改動代碼,也可以通過命令行直接啟動:
python -m pdb your_script.py
這樣會從腳本的第一行開始調試。
常用命令有哪些?
進入調試模式后,你會看到 (Pdb) 提示符,這時候可以輸入各種命令:
- n(ext):執行下一行代碼,遇到函數調用不會進去。
- s(tep):單步執行,如果當前是函數調用,會進入函數內部。
- c(ontinue):繼續執行直到下一個斷點或程序結束。
- l(ist):顯示當前執行位置附近的代碼。
- p :打印某個變量的值,比如 p x。
- q(uit):退出調試器并終止程序。
這些命令組合起來,就能快速定位問題所在。
怎么設置多個斷點?
除了手動插入 pdb.set_trace(),你還可以在調試過程中動態添加斷點。進入調試器后,使用:
b <行號>
比如 b 10 就是在第10行設一個斷點。你也可以指定文件名,比如:
b module.py:20
查看所有斷點用 b 不帶參數,刪除斷點可以用 cl 。
調試的時候怎么看堆棧?
有時候你會發現程序停在某個地方,但不知道是怎么走到這里的。這時候可以用:
- w(here):查看當前調用堆棧。
- u(p) 和 d(own):上下切換堆棧幀,查看不同層級的變量狀態。
這對分析遞歸、回調或者多層嵌套函數特別有用。
基本上就這些。pdb 的功能其實還有很多,比如條件斷點、跳過異常等,但在日常開發中,上面這幾招已經夠用了。關鍵在于熟悉流程、靈活使用,調試效率自然就上來了。