Python pdb 代码调试调试
pdb 模块定义了一个交互式源代码调试器,用于 Python 程序。它支持在源码行间设置(有条件的)断点和单步执行,检视堆栈帧,列出源码列表,以及在任何堆栈帧的上下文中运行任意 Python 代码
·
转载请注明作者和出处: http://blog.csdn.net/john_bh/
1. pdb 介绍
pdb 模块定义了一个交互式源代码调试器,用于 Python 程序。它支持在源码行间设置(有条件的)断点和单步执行,检视堆栈帧,列出源码列表,以及在任何堆栈帧的上下文中运行任意 Python 代码。它还支持事后调试,可以在程序控制下调用。调试器的提示符是 (Pdb)
两种使用方法:
- 非侵入式方法(不用额外修改源代码,在命令行下直接运行就能调试)
python -m pdb Test.py - 侵入式方法(需要在被调试的代码中添加一行代码然后再正常运行代码)
运行代码,程序会自动在pdb.set_trace()暂停并进入pdb调试环境,可以用命令p查看变量,或者用命令c继续运行。import pdb pdb.set_trace()
当你在命令行看到下面这个提示符时,说明已经正确打开了pdb:
(Pdb)
2. 常用命令
| 命令 | 功能 |
|---|---|
| h | 帮助 |
| l | (list)列出源码,如果不带参数,则列出当前行周围的 11 行,或继续前一个列表。 |
| ll | 列出当前函数或帧的所有源代码。 |
| b | (break)添加断点,列出当前所有断点,和断点执行到统计次数 |
| b line_no | 当前脚本的line_no行添加断点 |
| b filename:line_no | 脚本filename的line_no行添加断点 |
| b function | 在函数function的第一条可执行语句处添加断点 |
| tbreak | 临时断点,在第一次命中时会自动删除。它的参数与 break 相同 |
cl |
清除断点 |
| p | (print)输出expression的值,打印变量值 |
| c | (continue)继续执行,直到遇到下一条断点,非逐行调试命令 |
| r | (return)继续运行,直到当前函数返回 |
| a | (args)列出当前执行函数的参数,查看函数参数 |
| interact | 启动交互式解释器 |
| whatis | 打印变量类型 |
| w | (where)打印当前执行堆栈 |
| s | (step)执行下一条命令,如果本句是函数调用,则s会执行到函数的第一句 |
| n | (next)执行下一条语句,如果本句是函数调用,则执行函数,接着执行当前执行语句的下一条。 |
| run | 重新启动debug,相当于restart |
| q | (quit)退出debug,退出pdb |
3. 代码
import pdb
class MyObj:
def __init__(self, num_loops):
self.count = num_loops
def go(self):
for i in range(self.count):
pdb.set_trace()
print(i)
return
if __name__ == '__main__':
MyObj(5).go()
更多推荐


所有评论(0)