PDB调用启动方法
pdb有2种用法:
- 非侵入式(不用额外修改源代码,在命令行下直接运行就能调试)
python3 -m pdb filename.py
- 侵入式(需要在被调试的代码中添加一行代码然后再正常运行代码)
import pdb;pdb.set_trace()
当你在命令行看到下面这个提示符时,说明已经正确打开了pdb
(Pdb)
PDB常用命令
命令 | 说明 |
---|---|
1.查看源代码 | |
l | 查看当前位置前后11行源代码(多次会翻页)当前位置在代码中会用–>这个符号标出来 |
ll | 查看当前函数或框架的所有源代码 |
2.添加断点 b | 1.不带参数表示查看断点设置 2.带参则在指定位置设置一个断点 |
b lineno | lineno断点添加到哪一行 |
b filename:lineno | filename文件名,断点添加到哪个文件,如test.py |
b functionname | function:函数名,在该函数执行的第一行设置断点 |
3.添加临时断点tbreak | 执行一次后时自动删除(这就是它被称为临时断点的原因) |
tbreak lineno | |
tbreak filename:lineno | |
tbreak functionname | |
4、清除断点cl | 1.不带参数用于清除所有断点,会提示确认(包括临时断点)2.带参数则清除指定文件行或当前文件指定序号的断点 |
cl filename:lineno | |
cl bpnumber [bpnumber ...] | bpnumber 断点序号(多个以空格分隔) |
5、打印变量值p | |
p expression | expression Python表达式 |
6、逐行调试命令 | |
s | 执行下一行(能够进入函数体) |
n | 执行下一行(不会进入函数体) |
r | 执行下一行(在函数中时会直接执行到函数返回处) |
7、非逐行调试命令 | |
c | 持续执行下去,直到遇到一个断点 |
unt lineno | 持续执行直到运行到指定行(或遇到断点) |
j lineno | 直接跳转到指定行(注意,被跳过的代码不执行) |
8、查看函数参数 | |
a | 在函数中时打印函数的参数和参数的值 |
9、打印变量类型 | |
whatis expression | 打印表达式的类型,常用来打印变量值 |
10、启动交互式解释器 | |
interact | 启动一个python的交互式解释器,使用当前代码的全局命名空间(使用ctrl+d返回pdb) |
11、打印堆栈信息 | |
w | 打印堆栈信息,最新的帧在最底部。箭头表示当前帧。 |
12、退出pdb | |
q |