Linux 下如何除錯 Python?
一般開發者都是在 IDE 中進行程式的除錯,當然,有 IDE 的話,當然首選 IDE 進行除錯。
但是,有時我們的業務場景,限制只能在 Linux 命令列模式進行除錯。
這時該怎麼辦呢?
今天,就給大家介紹一個 Linux 下除錯 Python 程式的工具。
pdb簡介
pdb 偵錯程式是 Python 標準庫提供的,因此最為方便,不需要安裝其他元件,直接 import 後就能使用。
pdb 偵錯程式提供了除錯所需的大多數功能,如斷點、單行步進、堆疊幀的檢查等等。
常用命令
l # 檢視執行到哪行程式碼 n # 單步執行,跳過函式 s # 單步執行,可進入函式 p 變數 # 檢視變數值 b 行號 # 斷點設定到第幾行 b # 顯示所有斷點列表 cl 斷點號 # 刪除某個斷點 cl # 刪除所有斷點 c # 跳到下一個斷點 r # return 當前函式 exit # 退出
使用示例
本文 Python 環境:Python 3.5.2
我們先準備一小段演示程式:
# -*- coding: utf-8 -*- def add(a, b): return a + b if __name__ == '__main__': print("===start===") c = add(1, 3) print("===end===")
使用方法 1:
執行 pdb 的最簡單方法是從命令列,將程式作為引數傳遞來除錯。
$ python -m pdb test_pdb.py
這時,就開始單步執行了。
這種方法對程式碼沒有侵入性,但是每次都需要設定斷點。
使用方法 2:
在程式碼頭部引入 pdb,然後可以在程式碼裡,通過 pdb.set_trace()
來設定斷點:
# -*- coding: utf-8 -*- import pdb def add(a, b): pdb.set_trace() return a + b if __name__ == '__main__': print("===start===") pdb.set_trace() c = add(1, 3) print("===end===")
此時,執行程式,就會自動跳轉到設定的斷點處:
總結
沒了圖形化頁面,除錯只能這麼來了,不過還好,pdb 使用看著不難吧。
其實還有一些增強的偵錯程式,比如 IPython 的 ipdb 和 pdb++,它們一般都提供了更好的使用者體驗,添加了有用的額外功能,例如語法突出高亮、更好的回溯和自省。
後面有機會再給大家分享吧!