pdb.jpg
最近需要深入了解一個python的graphql框架graphene,但這個項目文檔寫得不夠詳細(xì),使用例子寥寥無幾,對于一些稍微復(fù)雜的使用場景很難在網(wǎng)上找到信息。
于是決定投資一點(diǎn)時間好好看看其源代碼。面對數(shù)量驚人的代碼,最好的手段莫過于帶著問題去debug代碼,函數(shù)的調(diào)用stack,以及數(shù)據(jù)變量都一清二楚。
開始第一個想到的是用vscode自帶的python插件,可惜這個插件目前還不是很完善,很多功能還在完善中,中間浪費(fèi)了不少時間配置,最后沒有得到滿意的結(jié)果。
后來找到今天的主角ipdb:
PDB(Ipython Debugger),和GDB類似,是一款集成了Ipython的Python代碼命令行調(diào)試工具,可以看做PDB的升級版。
安裝使用
pip install ipdb
然后在代碼中插入
import ipdb;
ipdb.set_trace()
幫助
h(help):幫助命令
s(step into):進(jìn)入函數(shù)內(nèi)部
n(next):執(zhí)行下一行
b(break): b line_number 打斷點(diǎn)
cl(clear): 清除斷點(diǎn)
c(continue): 一直執(zhí)行到斷點(diǎn)
r(return): 從當(dāng)前函數(shù)返回
j(jump): j line_number,跳過代碼片段,直接執(zhí)行指定行號所在的代碼
l(list): 列出上下文代碼
a(argument): 列出傳入函數(shù)所有的參數(shù)值
p/pp: print 和 pretty print 打印出變量值
r(restart): 重啟調(diào)試器
q(quit): 推出調(diào)試,清除所有信息