pdb標準庫

官方文檔 : https://docs.python.org/3/library/pdb.html#debugger-commands

介紹

pdb是Python自帶的庫,是Python程序的一個交互式源代碼調試工具.

使用

在調試器控制下運行:

>>> import pdb
>>> import mymodule
>>> pdb.run('mymodule.test()')
> <string>(0)?()
(Pdb) continue
> <string>(1)?()
(Pdb) continue
NameError: 'spam'
> <string>(1)?()
(Pdb)

將pdb作為腳本來調試其他腳本:

python3 -m pdb myscript.py

運行后,自動進入pdb的命令行模式.

插入在測試代碼中

import pdb; 
pdb.set_trace()

代碼運行時,將在pdb.set_trace()處進入斷點調試.

pdb模塊的函數

pdb.run(statement, globals=None, locals=None)

statement : 要調試的語句塊,以字符串的形式表示
globals: 可選參數,設置statement運行的全局環境變量
locals: 可選參數,設置statement運行的局部環境變量

示例 :

>>> import pdb                # 導入調試模塊  
>>> pdb.run('''''               # 調用run()函數執行一個for循環 
for i in range(3): 
    i *= 3 
    print(i) 
    ''')  
> <string>(2)<module>()       
(Pdb) n                       # (Pdb)為調試命令提示符,表示可輸入調試命令  
> <string>(3)<module>()  
(Pdb) n                       # n(next)表示執行下一行  
> <string>(4)<module>()  
(Pdb) print(i)                # 打印變量i的值  
0  
(Pdb) continue                # 繼續運行程序  
0  
3  
6 

runeval(expression, globals=None, locals=None)

expression: 要調試的表達式
globals: 可選參數,設置expression運行的全局環境變量
locals: 可選參數,設置expression運行的局部環境變量

import pdb
a = "aaa"
pdb.set_trace()
b = "bbb"
c = "ccc"
pdb.runeval('a+b') 
final = a + b + c
print final

運行結果 :

-> b = "bbb"
(Pdb) c
> <string>(1)<module>()
(Pdb) n
--Return--
> <string>(1)<module>()->'aaabbb'
(Pdb) c
aaabbbccc

runcall( * args, ** kwds)

function: 函數名
args(kwds): 函數的參數

import pdb
a = 3
b = 4
c = 5
def sum(a,b):
    return a+b
result = pdb.runcall(sum,a,b)
print result
final = a + b + c
pdb.set_trace()
print final

運行結果 :

-> return a+b
(Pdb) c
7
> g:\users\username\pycharmprojects\test_unittest\for_tests.py(36)<module>()
-> print final
(Pdb) c
12

pdb.set_trace()

在插入這個語句的代碼處開始進入硬斷點.

調試命令行

常用斷點調試命令 :

完整命令 簡寫命令 描述
args a 打印當前函數的參數
break b 設置斷點
clear cl 清除斷點
condition 設置條件斷點
continue c 繼續運行,直到遇到斷點或者腳本結束
disable 禁用斷點
enable 啟用斷點
help h 查看pdb幫助
ignore 忽略斷點
jump j 跳轉到指定行數運行
list l 列出腳本清單
next n 執行下條語句,遇到函數不進入其內部
print p 打印變量值
quit q 退出pdb
return r 一直運行到函數返回
tbreak 設置臨時斷點、斷點只中斷一次
step s 執行下一條語句,遇到函數進入其內部
where w 查看所在的位置
在pdb中執行語句

運行過程中,單步運行時,輸入上面的命令/簡寫命令,按Enter鍵執行描述的功能.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 大多數編程語言都有自己的內置函數,Python也不例外,同樣提供了豐富的內置函數,其中包括算術函數、字符串操作函數...
    簡書冷雨閱讀 933評論 0 0
  • 個人筆記,方便自己查閱使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik閱讀 67,743評論 0 5
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數據革命閱讀 12,203評論 2 33
  • 轉載 與調試器共舞 - LLDB 的華爾茲: https://objccn.io/issue-19-2/ 推薦:i...
    F麥子閱讀 3,349評論 0 10
  • 有了我們家競競后, 幾乎變成了全職媽媽。 昨晚上競競爸爸說, 媽媽早點睡, 晚上由爸爸帶。 然后最終結果是: 競競...
    玉妖閱讀 161評論 0 0