python调试工具 -- pdb
参考资料
简介
pdb是python的内置模块,类似c++中的gdb的存在,可用于在命令行中对代码进行调试。
进入调试
- 修改代码
The typical usage to break into the debugger from a running program is to insert at the location you want to break into the debugger.
在需要调试的位置插入以下代码,运行的时候,会在插入位置停止进入调试模式。
1 | import pdb |
- 脚本执行调试
pdb.py can also be invoked as a script to debug other scripts
1 | # myscript.py为要调试的程序 |
推荐使用方法2,重要的是不会添加额外的代码污染代码,更加灵活。
常用命令
命令
功能
_断点有关的命令_
b(break)
查看已设的所有断点
b no
设置断点,no是断点所在的行号
b filename:no
将断点添加到某个文件中
b funcname
为函数funcname的第一行设置断点
tbreak(break)
同b,临时断点,执行一次自动清除
tbreak no
略
tbeak filename:no
略
tbreak funcname
略
disable bno
禁用指定序号断点,但未删除
enable bno
启用指定序号断点
cl
清除所有断点(包括临时断点)
cl bno1[bno2 ……]
清除指定序号的断点,多个用空格分隔
cl filename:no
清除某文件所在行号的断点
_调试相关的命令_
s(step)
执行下一句,遇到函数会进入到函数内部执行
n(next)
执行下一句,不会进入函数
r(return)
执行当前所在函数的返回处
c(continue)
执行到下一个断点处
unt(until)
退出当前循环或堆栈,遇到断点会停止
unt no
执行到指定行号处停止
_查看代码或变量值_
l(list)
列出当前执行行周围的11行代码
l no
列出指定行号周围的11行代码
l no1 no2
列出no1 no2间的行号
ll
列出所有代码
p exp
打印某变量或表达式的值
pp exp
好看一点打印某变量或表达式的值
a
查看所在函数的参数与参数值
what is var
查看变量的类型
_其它_
restart
重新运行
run
类似restart
q(quit)
退出调试
interact
启动一个python的交互式解释器,使用当前代码的全局命名空间 ctrl + d退出