很久以前鲤妥,我的調(diào)試都是采用print,由于寫的內(nèi)容比較簡單拱雏,所以也可以快樂的過下去棉安,但是隨著代碼量的增加,簡單的print調(diào)試方法铸抑,已經(jīng)不能很好的解決問題了贡耽,再加上聽了內(nèi)核恐慌的調(diào)試那一期節(jié)目,終于開始了拖了很久的調(diào)試的學(xué)習(xí)鹊汛,當(dāng)然Python也有很多的庫可以用來進(jìn)行調(diào)試蒲赂,這里我們只考慮其官方自帶的庫pdb,本以為是一件很麻煩的事情刁憋,可是學(xué)習(xí)后突然發(fā)現(xiàn)滥嘴,原來是如此的簡單,調(diào)試一共分為兩種模式职祷。
1.不引入pdb庫氏涩,運(yùn)行時添加參數(shù)。
python -m pdb test.py
這時候就需要用到一些快捷鍵進(jìn)行調(diào)試有梆,對于稍微有點(diǎn)英語基礎(chǔ)的人來說這些還是比較簡單的是尖,首先我們讓他執(zhí)行下一行命令,可以是 n (next),或者顯示當(dāng)前的代碼情況l(list),打印變量p(print),或者對某些變量進(jìn)行一些操作(可以聲明變量泥耀,但是這有一個坑饺汹,就是當(dāng)你聲明一個變量為一些命令字符,例如p的時候痰催,就會出現(xiàn)問題兜辞,此時需要采用在變量前面加一迎瞧!的方式解決), 從一個函數(shù)中返回r(return)逸吵,進(jìn)入一個函數(shù)s(step into)凶硅,繼續(xù)執(zhí)行 c (continue),以及破壞性地推出q(quit)扫皱,以及萬能的回車鍵(會重復(fù)上一次執(zhí)行的命令)足绅。
2.引入pdb庫,設(shè)置斷點(diǎn)
有些時候韩脑,當(dāng)函數(shù)很長的時候氢妈,我們沒必要讓其從頭一步步運(yùn)行,我們能大致估計出問題出現(xiàn)的位置段多,此時我們可以設(shè)定一個斷點(diǎn)首量。
import pdb
pdb.set_trace()
然后正常運(yùn)行,在斷點(diǎn)位置进苍,自動進(jìn)入調(diào)試狀況加缘,快捷鍵依舊和之氣的一樣。
3.常用快捷鍵總結(jié)
快捷鍵 | short for | 含義 |
---|---|---|
n | next | 繼續(xù)執(zhí)行 |
b | breakpoint | 設(shè)置斷點(diǎn)琅捏,例如 “b 77″生百,就是在當(dāng)前腳本的77行打上斷點(diǎn),還能輸入函數(shù)名作為參數(shù)柄延,斷點(diǎn)就打到具體的函數(shù)入口,如果只敲b缀程,會顯示現(xiàn)有的全部斷點(diǎn) |
c | continue | 讓程序正常運(yùn)行搜吧,直到遇到斷點(diǎn) |
r | return | 返回執(zhí)行結(jié)果 |
q | quit | 強(qiáng)制退出 |
s | step into | 進(jìn)入函數(shù) |
p | 打印變量 | |
l | list | 輸出當(dāng)前代碼狀況 |
cl | clear | 清除斷點(diǎn) |
h | help | 幫助 |
呼呼呼山
Jun 2, 2016 12:22 AM