作用:
- Python的交互式调试工具
- 可以暂停程序,查看变量值,逐步监控程序执行
Python版本:
- 1.4及以后版本
函数定义:
- pdb.run() #表达式为一个可以由Python解释器计算的串表达式
- pdb.runeval()
- pdb.set_trace() #用于在程序中启用调试工具,set_trace为函数,可以再程序中的任意位置调用;可以用于在程序异常时的调试
- pdb.pm() #支持事后剖析调试,用于解释器中查找traceback,在调用栈中出现异常的位置启动调试工具
- pdb.post_mortem()
- 导航工具:
- where (缩写为w) #获取当前正在执行哪一行,以及程序在调用栈中的哪个位置
- list #查看当前位置更多的上下文,默认会将前后各5行内容显示出来
- list lineNum #显示指定行号(lineNum)前后各5行内容
- list startPos endPos #输出行号从startPos到endPos之间的所有代码行,包含起始位置
- up | down #在调用栈中前后移动
- args #会打印当前活动函数的所有参数
- p expr #在调试工具中执行表达式expr,允许执行任意的表达式,包括修改当前环境的变量
- print expr #将表达式传到解释器中执行,并输出执行结果
- pp lines #使用pprint格式化值以便美观的打印
- step #单步执行程序,在下一条语句暂停
- next #不同于step的是,next不会进入函数调用内部
- until #类似于next,会一直执行到同一个函数中行号大于当前行号的一行,说明until可以用于在循环尾部跳出循环体
- return #绕开函数的一个捷径,会一直执行到当前函数的renturn语句为止
- 断点
- break lineno #在行号为lineno的地方设置断点
- c(ontinue) #继续执行直到下一个断点
- break func #将断点设置在函数func的第一行
- break python_file.py:lineno #在另一个文件python_file.py的第lineno行处设置断点
- break #不带参数的break命令会罗列出所有断点的信息
- disable num #将编号为num的断点暂时禁止掉,不让其发挥作用
- enable num #启用编号为num的断点
- clear num #清楚编号为num的断点
- tbreak linenum #在行号为linenum的位置设置临时断点,临时断点在第一次出现后会被自动删除
- break linenum, condition_expr #设置条件断点,当满足condition_expr时程序在断点处暂停
- condition num condtion_expr #对已经存在的编号为num的断点设置条件
- ignore break_num numer #忽略编号为break_num的断点number次,显示的将忽略次数设置为0可以立即启用该断点
- cmmands break_num commands_expr #为编号为break_num的断点设置触发动作,commands_expr以end结束
- jump lineno #调到lineno行开始执行。前跳:在当前行与lineno之间所有代码将不被执行;后跳:会让跳过的代码行重复执行一次
- run #使用run命令重启程序
- 别名,可以通过为一个复杂的调试命令设置别名,从而简化重复输入工作
- alias new_name expr #为expr设置别名new_name
- unalias #删除一个别名的定义
- 配置,可以通过将调试命令保存在配置文件中,从而使得每次启用调试时自动加载调试命令,从而减少重复输入调试命令的工作,用户主目录下的.pdbrc
应用实例:
- 从命令行运行
- python -m pdb pdb_script.py
- 在解释器中运行
- 在程序中运行