Pdb— Python的调试器
pdb
模块定义了一个交互式源代码调试器,用于 Python 程序。它支持在源码行间设置(有条件的)断点和单步执行,检视堆栈帧,列出源码列表,以及在任何堆栈帧的上下文中运行任意 Python 代码。它还支持事后调试,可以在程序控制下调用。
Pdb的调用
用pdb调试有多种方式可选:
-
命令行
python3 -m pdb myscript.py
-
Python交互环境
>>> import pdb >>> import mymodule >>> pdb.run('mymodule.test()')
-
程序调用
一般是在程序中可能出现问题的地方,插入
pdb.set_trace()
,程序运行到了pdb.set_trace()
处就会停止,然后输入调试命令,即可进行调试。Example:
if __name__ == "__main__": a = 1 import pdb pdb.set_trace() b = 2 c = a + b print (c)
Pdb常用命令
命令 | 作用 |
---|---|
h(elp) [command] | 不带参数时,显示可用的命令列表。 参数为 command 时,打印有关该命令的帮助。 |
b(reak) | 设置断点。 如果带有 lineno 参数,则在当前文件相应行处设置一个断点。 如果带有 function 参数,则在该函数的第一条可执行语句处设置一个断点。 |
cl(ear) | 清除断点 如果参数是 filename:lineno,则清除此行上的所有断点。 如果参数是空格分隔的断点编号列表,则清除这些断点。 如果不带参数,则清除所有断点。 |
s(tep) | 执行当前行,在第一个可以停止的位置(在调用的函数中或在当前函数的下一行)停下。 |
n(ext) | 继续运行,直到运行到当前函数的下一行,或当前函数返回为止。 |
r(eturn) | 继续运行,直到当前函数返回。 |
l(ist) [first[, last]] | 列出当前文件的源代码。 |
a(rgs) | 打印当前函数的参数列表。打印当前函数的参数列表。 |
p expression | 在当前上下文中运行表达式 expression 并打印它的值。 |
whatis expression | 打印 expression 的类型。 |
q(uit) | 退出调试器。 被执行的程序将被中止。 |