-
简介
-
本质
python
的一个模块.
-
功能
- 提供
gdb
有的基本功能.简洁版本. - 支持断点设置,跳转,查看堆栈,查看变量和表达式等.
- 和
gdb
一样是交互式,prompt
是pdb
.
- 提供
-
三种方式
-
python
交互式中使用>>> import pdb >>> def test(): ... pdb.set_trace() ... a = 1 ... return a >>> pdb.run('test()') > <string>(1)<module>()->None (Pdb) c > <stdin>(3)test() (Pdb) n > <stdin>(4)test() (Pdb) bt <stdin>(1)<module>()->None d:\program\python38\lib\pdb.py(1596)run() -> Pdb().run(statement, globals, locals) d:\program\python38\lib\bdb.py(580)run() -> exec(cmd, globals, locals) <string>(1)<module>()->None > <stdin>(4)test() (Pdb) list [EOF] (Pdb) p a 1 (Pdb)
-
脚本式执行
import pdb def Test(): pdb.set_trace() a=0 b=1 c=2 Test()
- 调用
python test.py
pdb.set_trace()
是设置断点,执行就直接挺到这一行,并启动交互式gdb
.- 执行结果
D:\code\py\debug>python test.py > d:\code\py\debug\test.py(4)Test() -> a=0 (Pdb) n > d:\code\py\debug\test.py(5)Test() -> b=1 (Pdb) p a 0 (Pdb) n > d:\code\py\debug\test.py(6)Test() -> c=2 (Pdb) p b 1 (Pdb) n --Return-- > d:\code\py\debug\test.py(6)Test()->None -> c=2 (Pdb) p c 2 (Pdb)
- 调用
-
从头开始调试
- 同样的代码,执行参数不同而已.
D:\code\py\debug>python -m pdb test.py > d:\code\py\debug\test.py(1)<module>() -> import pdb (Pdb) n > d:\code\py\debug\test.py(2)<module>() -> def Test(): (Pdb) n > d:\code\py\debug\test.py(8)<module>() -> Test() (Pdb) s --Call-- > d:\code\py\debug\test.py(2)Test() -> def Test(): (Pdb) n > d:\code\py\debug\test.py(3)Test() -> pdb.set_trace() (Pdb) n > d:\code\py\debug\test.py(4)Test() -> a=0 (Pdb) n > d:\code\py\debug\test.py(5)Test() -> b=1 (Pdb) n > d:\code\py\debug\test.py(6)Test() -> c=2 (Pdb)
-
-
pdb
函数 -
新版本
- 新版本不用
import pdb; pdb.set_trace()
这种方式设置静态断点了. - 使用内置函数
breakpoint()
设置静态断点.就不用import pdb
.
- 新版本不用
-
-
指令
-
指令识别
pdb
识别的,则当成调试指令执行.- 不识别的,则当成
python
脚本执行.这种情况下,即使出错,也不会影响pdb
.
-
指令简介
- 支持简写.
- 空白行表示执行上一条指令.
-
静态配置
~/
或当前路径存在.pdbrc
结尾的会读入并执行.
-
指令帮助
-
堆栈操作
-
断点操作
-
设置断点
b(reak) [([filename:]lineno | function) [, condition]]
- 指定位置设置断点,或指定函数设置断点.
condition
可以设置条件断点.- 没有文件则表示当前文件,
function
则表示对应文件下的函数. - 文件通过
sys.path
路径搜索.
-
查看断点
b(reak)
.- 即无参.
-
设置一次性断点
tbreak [([filename:]lineno | function) [, condition]]
- 和上面的断点一样的设置.
- 只是一次性的而已,查看也用
b(reak)
查看.
-
删除断点
cl(ear) [filename:lineno | bpnumber ...]
- 无参删除所有.
- 有参则删除指定位置的.
- 或指定编号的.编号通过
b(reak)
查看.
-
禁用断点
disable [bpnumber ...]
- 按照编号禁用断点.
-
启用断点
enable [bpnumber ...]
- 启用指定编号的断点,和禁用相反的操作.
-
修改断点:断点
n
次后启用ignore bpnumber [count]
- 给指定编号断点设置忽略次数.
- 即断点计数,断点过了
count
次后才触发. - 默认
0
-
修改断点:给断点设置条件
condition bpnumber [condition]
- 修改指定编号的断点,表达式为真才触发.
-
修改断点:给断点添加触发指令
commands [bpnumber]
- 没有
bpnumber
则表示上一个断点设置. - 可以设置多个指令,以
end
结束. continue, step, next, return, jump, quit
不能设置.
-
-
跳转
-
代码相关
-
变量
-
执行
python
代码!python_code
- 还有一种方式是前面提到过:只要是
debugger
不识别的指令,都会当成python
代码执行.
-
启动和退出相关
-
linux 下调试 python,命令行调试python脚本
Supongo que te gusta
Origin blog.csdn.net/rubikchen/article/details/119950614
Recomendado
Clasificación