在Linux 下如何調(diào)試 Python,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
目前創(chuàng)新互聯(lián)建站已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、賓陽網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
一般開發(fā)者都是在 IDE 中進(jìn)行程序的調(diào)試,當(dāng)然,有 IDE 的話,當(dāng)然首選 IDE 進(jìn)行調(diào)試。
但是,有時(shí)我們的業(yè)務(wù)場(chǎng)景,限制只能在 Linux 命令行模式進(jìn)行調(diào)試。
這時(shí)該怎么辦呢?
大家介紹一個(gè) Linux 下調(diào)試 Python 程序的工具。
pdb 調(diào)試器是 Python 標(biāo)準(zhǔn)庫提供的,因此最為方便,不需要安裝其他組件,直接 import 后就能使用。
pdb 調(diào)試器提供了調(diào)試所需的大多數(shù)功能,如斷點(diǎn)、單行步進(jìn)、堆棧幀的檢查等等。
l # 查看運(yùn)行到哪行代碼
n # 單步運(yùn)行,跳過函數(shù)
s # 單步運(yùn)行,可進(jìn)入函數(shù)
p 變量 # 查看變量值
b 行號(hào) # 斷點(diǎn)設(shè)置到第幾行
b # 顯示所有斷點(diǎn)列表
cl 斷點(diǎn)號(hào) # 刪除某個(gè)斷點(diǎn)
cl # 刪除所有斷點(diǎn)
c # 跳到下一個(gè)斷點(diǎn)
r # return 當(dāng)前函數(shù)
exit # 退出
復(fù)制代碼
本文 Python 環(huán)境:Python 3.5.2
我們先準(zhǔn)備一小段演示程序:
# -*- coding: utf-8 -*-
def add(a, b):
return a + b
if __name__ == '__main__':
print("===start===")
c = add(1, 3)
print("===end===")
復(fù)制代碼
使用方法 1:
運(yùn)行 pdb 的最簡單方法是從命令行,將程序作為參數(shù)傳遞來調(diào)試。
$ python -m pdb test_pdb.py
復(fù)制代碼
這時(shí),就開始單步執(zhí)行了。
這種方法對(duì)代碼沒有侵入性,但是每次都需要設(shè)置斷點(diǎn)。
使用方法 2:
在代碼頭部引入 pdb,然后可以在代碼里,通過 pdb.set_trace() 來設(shè)置斷點(diǎn):
# -*- 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===")
復(fù)制代碼
此時(shí),運(yùn)行程序,就會(huì)自動(dòng)跳轉(zhuǎn)到設(shè)置的斷點(diǎn)處:
沒了圖形化頁面,調(diào)試只能這么來了,不過還好,pdb 使用看著不難吧。
其實(shí)還有一些增強(qiáng)的調(diào)試器,比如 IPython 的 ipdb 和 pdb++,它們一般都提供了更好的用戶體驗(yàn),添加了有用的額外功能,例如語法突出高亮、更好的回溯和自省。
看完上述內(nèi)容,你們掌握在Linux 下如何調(diào)試 Python的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!