大家都知道Python是自備Pdb庫,使用Pdb調試Python程式還是很方便的。但是遠端調試、多線程,Pdb是搞不定的,下面一起來看看用Pdb庫調試Python的方式及常用的指令。
用Pdb調試有多種方式
#使用 Pdb調試 Python的程式的方式主要是下面的三種!下面逐一介紹
命令列加-m參數
#命令列啟動目標程序,加上-m參數,這樣呼叫testPdb.py的話斷點就是程式執行的第一行之前
本文接下來重點講到的實例展示就是使用這種方式進行調試的!
python -m pdb testPdb.py
在python互動環境偵錯
##
>>> import pdb >>> import testPdb >>> pdb.run('testPdb.test()')
程式碼中插入一段程式
hardcode的
if __name__ == "__main__": a = 1 import pdb pdb.set_trace() b = 2 c = a + b print(c)#然後正常運行腳本:
python testPdb.py 到了
pdb. set_trace()那裡就會定下來,然後就可以看到調試的提示符(Pdb)了
針對上面的這段小程式的調試情況如下:
準備測試程序
testFun.py
#
#!/usr/bin/python # -*- coding: utf-8 -*- def add(a, b): return a + b
testPdb.py
#!/usr/bin/python # -*- coding: utf-8 -*- def sub(a, b): return a - b if __name__ == "__main__": print '' import testFun i = 0 a = 1 while(i < 100): a = testFun.add(a, 1) i = i + 1 print "累加结果:", a print "" for letter in 'Pdb': print "当前字母:", letter print "" fruits = ['banana', 'apple', 'mango'] for fruit in fruits: print "当前水果:", fruit print "" ret = 0 for num in range(10, 12): ret = sub(ret, num) print '循环结果:', ret print "" d = {'abc': 123, 123: "abc"} for (k,v) in d.items(): print "当前键值对:", k, '-', v print ""
總結常用的指令
基礎指令
h [command] ,例如
h l 查看list指令
斷點管理
b testFun.add 就可以實作在testFun.py腳本中的add函數加斷點
如果只用b 就會顯示現有的全部斷點
condition bpnumber [condition]:設定條件斷點,例如condition 2 a==0 ,就是在第二個斷點出加條件「a== 0”cl(ear):刪除斷點,如果後面有參數,就是清楚指定的斷點;如果不帶參數就是清除所有的斷點disable/enable:停用/啟動斷點程式邏輯控制
testFun.當add(a, 1)時,繼續執行n,並不會進入
testFun.add(a, 1)的函數內部
testFun.add(a, 1)時,繼續執行s,會進入
testFun.add(a, 1)對應的函數定義內部,雖然
testFun.add不是本腳本定義的函數
列印重要資訊
testFun.add內部之後,列印
testFun.add的參數
退出偵錯
總結
上面展示的使用 Pdb調試的過程其實是很簡單的,文章中主要透過截圖展示運行的效果。如果單純的看一遍文章,不出意外,會很沒有頭緒,甚至感覺截圖中的命令、輸出亂七八糟,但是如果親自動手跟著走一遍流程,花不了一小時,但是效果絕對極佳!多說一句,Python的調試器是 Pdb,可以對應學習 Linux下 C的調試器 gdb,以上就是本文全部內容,希望對大家學習與工作能有所幫助。
更多用Pdb庫調試Python的方式及常用的指令相關文章請關注PHP中文網!