调试Python程序的小工具
首先众所周知调试C程序的高效率工具–GDB有了Python版本:pdb
。
安装
pip install pdb
调试程序样例:
# test.py
import signal
import time
def get(d):
print(d)
print(d+1)
time.sleep(60)
return None
get(1)
使用技巧
进入pdb调试环境;
python3 -m pdb test.py
输入"ll"(L)显示源码(箭头表示当前运行位置):
(Pdb) ll
1 -> import signal
2
3 import time
...
12 def get(d):
13 print(d)
14 print(d+1)
15 time.sleep(60)
16 return None
17 get(1)
18 exit()
输入n运行下一行(import time);
接下来给15行打个断点:
(Pdb) tbreak 15
Breakpoint 1 at test.py:15
但是发现15行并没有问题,清除15行的断点。并给16行添加断点
(Pdb) cl 15
*** Breakpoint number 15 out of range
(Pdb) b 16
Breakpoint 2 at test.py:16
看下调用函数的内部使用s ,查看函数的参数使用a;
(Pdb) s
><frozen importlib._bootstrap>(144)__init__()
(Pdb) a
但是逐行的看太慢了,执行到20行停下来:
(Pdb) unt 20
还是太慢了,跳转到22行吧(注意跳过的代码不执行):
(Pdb) 22
打印堆栈信息使用w,打印使用p ,查看变量类型使用whatis。
调试过程经常会需要写测试代码(ctrl D退出到pdb):
(Pdb) interact
>>>
退出pdb使用q。