The Python Debugger
- Python自帶交互式源代碼調試器,在代碼中設置斷點,單步執行。
調試腳本
- 逐句調試
python -m pdb filename.py
方法
.run
- 在調試器控制下執行語句。
.runeval
- 在調試器控件下測試表達式(以字符串形式給出)。當runeval()返回時,它返回表達式的值。否則此功能類似於run()。
.runcall
- 使用給定的參數調用函數
.set_trace()
- 創建一個調試器。
.post_mortem
- 輸入給定回溯對象的事後調試。如果沒有給出回溯,它將使用當前正在處理的異常之一(如果要使用默認值,則必須處理異常)。
.pm()
- 輸入在中找到的回溯的事後調試 sys.last_traceback。
調試器類
- class pdb.Pdb(completekey=‘tab’, stdin=None, stdout=None, skip=None, nosigint=False, readrc=True)
Pdb 是調試器類。詳細信息
調試器命令
- h(elp) [command]
獲得command的幫助信息。
- w(here)
打印堆棧跟蹤,當前堆棧
- d(own)
打印下一個堆棧信息。
- u( p )
打印上一個堆棧信息。
- b(reak) [[filename:]lineno | function[, condition]]
使用lineno參數,在文件中設置中斷,執行break。
- tbreak [[filename:]lineno | function[, condition]]
臨時斷點,在第一次被擊中時自動刪除。參數與break相同。
- cl(ear) [filename:lineno | bpnumber [bpnumber …]]
使用filename:lineno參數,清除此行的所有斷點。
- disable [bpnumber [bpnumber …]]
禁用以空格分隔的斷點號列表給出的斷點。禁用斷點意味着它不能導致程序停止執行,但與清除斷點不同,它會保留在斷點列表中並可以(重新)啓用。
- enable [bpnumber [bpnumber …]]
啓用指定的斷點。
- ignore bpnumber [count]
設置給定斷點號的忽略計數。如果省略count,則忽略計數設置爲0.當忽略計數爲零時,斷點將變爲活動狀態。當非零時,每次到達斷點時計數都會遞減,並且斷點未被禁用且任何關聯條件的計算結果爲true。
- condition bpnumber [condition]
Condition是一個表達式,在斷點被接受之前必須求值爲true。如果條件不存在,則刪除任何現有條件; 即,斷點是無條件的。
- commands [bpnumber]
指定斷點號bpnumber的命令列表。命令本身出現在以下行中。鍵入僅包含’end’的行以終止命令。
(Pdb) commands 1
(com) print some_variable
(com) end
(Pdb)
- s(tep)
執行當前行,在第一個可能的場合停止(在被調用的函數中或在當前函數的下一行中停止)。
- n(ext)
繼續執行,直到達到當前函數中的下一行或返回。
- unt(il)
繼續執行,直到達到行號大於當前行的行或從當前幀返回。
- r(eturn)
繼續執行,直到當前函數返回。
- c(ont(inue))
繼續執行,僅在遇到斷點時停止。
- j(ump) lineno
設置將要執行的下一行。
- l(ist) [first[, last]]
列出當前文件的源代碼。
- a(rgs)
打印當前函數的參數列表。
- p expression
評估當前上下文中的表達式並打印其值。
- pp expression
與p命令一樣,除了表達式的值使用pprint模塊進行漂亮打印。
- alias [name [command]]
創建一個名爲name的別名來執行命令。
- unalias name
刪除指定的別名。
- [!]statement
在當前堆棧幀的上下文中執行(一行)語句。除非語句的第一個單詞類似於調試器命令,否則可以省略感嘆號。要設置全局變量,可以在賦值命令的global前面加上同一行的命令,例如:
(Pdb) global list_options; list_options = ['-l']
(Pdb)
- run [args …]
重新啓動調試的Python程序。
- q(uit)
退出調試器。正在執行的程序被中止。