【Python】pdb调试
19 Nov 2013启动方式
pdb有三种方式:
1.
命令行启动目标程序,加上-m参数,这样调用myscript.py的话断点就是程序的执行第一行之前
python -m pdb xxx.py
╭─@Flowerowl.local ~/z/pj/pylink
╰─ python -m pdb main.py 1 ↵
/Users/Flowerowl/z/pj/pylink/main.py(3)
() -> import model.urlQuence as urlQuence
2.
在Python交互环境中启用调试
import pdb
import module
pdb.run(‘module.test()’)
3.
比较常用的,就是在程序中间插入一段程序,相对于在一般IDE里面打上断点然后启动debug
if __name__ == “__main__”:
a = 1
import pdb
pdb.set_trace()
b = 2
c = a + b
print (c)
然后正常运行脚本,到了pdb.set_trace()那就会定下来,就可以看到调试的提示符(Pdb)了
pdb常用命令
q
退出debug
h 即help,打印所有可以命令
h w
打印命令 w
的含意
n
执行当前行直到到达下一行或直到它返回
s
执行当前行,一有可能就停止(比如当前行有一个函数调用)。它和n(next)的区别是当前行中有函数调用时s(step)会停止当前行的执行而去调用那个函数,而n不会停止,直到计算完成这一行(到达下一行)。
b(reak) [[filename:]lineno | function[, condition]]
设置断点,可以是行号或函数。如 b 10
, b foo
, b foo,n == 5
,最后在函数foo()
入口处设置一个断点,但仅当n的值是5时才有效。当b
命令无参数时,打印所有断点。
tb(reak) [[filename:]lineno | function[, condition]]
临时断点,只hit一次。
disable [bpnumber [bpnumber …]]
使指点行的断点(们)失效
enable [bpnumber [bpnumber …]]
使指定行上的断点(们)有效
c
继续执行程序,直到遇到下一个断点
w
即where,打印当前执行点的位置
l [first, [,last]]
输出当前行附近的源码
p expression
执行一个表达式当打印其值。
a(rgs)
打印当前函数的参数及其值