这次跟大家分享一个可以在无图像化界面下,调试python的内置模块(pdb),不需要要额外安装包!
定义:pdb(Python Debugger的缩写)是python的一个内置模块,其定义了一个交互式源代码调试器,用于在无可视化界面下的Python程序调试。
用途:
- 支持源码行间设置断点,支持单步执行;
- 支持检视堆栈帧,列出源码列表,以及在任何堆栈帧的上下文中运行任意 Python 代码;
- 还支持事后调试,可以在程序控制下调用。
用法:
- 侵入式方法:修改源代码;
# 设置断点方法1
import pdb
pdb.set_trace()
# 设置断点方法2:python3.7引入,当以默认参数调用该内置函数时,可用来替代方法1
breakpoint()
- 非侵入式方法:不修改源代码。
python -m pdb myscript.py
基于以上两种方法就可以进入pdb的交互模式:
基本命令
在进入Pdb的交互调试模式后,可以输入一些命令来进行接下来的操作。
由于readline模块实现的Tab补全可用于补全本模块的命令和命令的参数,在使用中,可只用一些简写方法:例如用p来代替print。
除了下面一些常见的命令,更复杂的可以见参考文档。
命令 | 解释 |
---|---|
break/b | 设置断点 |
continue/c | 继续执行 |
list/l | 查看当前行代码段 |
step/s | 进入函数(进入for循环用next) |
return/r | 执行代码直到从当前函数返回 |
next/n | 执行下一行 |
up/u | 返回上到上一个调用点 |
p x | 打印变量x的值 |
exit/q | 中止调试,退出程序 |
help/h | 帮助 |