1 python输出异常信息
window下python肯定很容易调试的,但是linux下就很难了,为了调试信息,可以输出抛出的异常看看具体什么错:
try:
...
...
except Exception as ex:
print( "抛出异常 %s" % (ex) )
2 pdb调试python
python3 -m pdb demo.py
按照如上方式就可以使用pdb调试Python,在控制台断点调试,来解决不容易发现的错误。其实和gdb很类似。
运行上面命令后,Pdb会自动停在第一行,等待调试,这时可以敲如下命令
命令 | 命令 | 含义 |
---|---|---|
list | l | 显示当前源代码的部分上下文 l 行号,显示指定行上下文 |
break | b | b 行号,添加指定行号断点, 直接输入b显示所有断点 |
break | b | b <filename:行号>,设置指定文件行上的断点 |
break | b | b <行号> <condition>,条件断点如b 11,i>10 或 b 75,id=="demo" 记得这里一个逗号 |
clear | cl | 删除断点 cl 断点编号 |
step | s | 单行运行,进入函数行, step in |
continue | c | 执行到下一个断点 |
next | n | 单行运行,跳过函数行 ** |
until | u | 执行到指定行,u 行号 |
print | p | 打印内部变量值如,p 变量名 ,p *数组名@数组长度 如 p *a10 |
pp | pp | 好看一点的打印 |
run | r | 开始 或 继续 运行程序 |
up | u | 返回上个调用点 |
down | d | 返回下个调用点 |
where | w | 打印当前执行堆栈 |
args | a | 显示当前所有变量 |
hep | h | 帮助 |
和GDB一样,Enter会直接重新运行上一条命令
输入PDB不认识的命令,PDB会把他当做Python语句在当前环境下执行
关于GDB调试可参考linux断点调试的一些问题