您的位置:首页 > 编程语言 > Python开发

用PDB库调试Python程序

2016-06-14 15:12 330 查看
Python自带的pdb库,发现用pdb来调试程序还是很方便的,当然了,什么远程调试,多线程之类,pdb是搞不定的。

用pdb调试有多种方式可选:

1. 命令行启动目标程序,加上-m参数,这样调用myscript.py的话断点就是程序的执行第一行之前

python -m pdb myscript.py

2. 在Python交互环境中启用调试

>>> import pdb

>>> import mymodule

>>> pdb.run(‘mymodule.test()’)

3. 比较常用的,就是在程序中间插入一段程序,相对于在一般IDE里面打上断点然后启动debug,不过这种方式是hardcode的

if __name__ == "__main__":

a = 1

import pdb

pdb.set_trace()

b = 2

c = a + b

print (c)
然后正常运行脚本,到了pdb.set_trace()那就会定下来,就可以看到调试的提示符(Pdb)了

常用的调试命令

h(elp),会打印当前版本Pdb可用的命令,如果要查询某个命令,可以输入 h [command],例如:“h l” — 查看list命令

l(ist),可以列出当前将要运行的代码块

在交互环境中通常使用pdb.run来调试:

 

 b 函数名、行号

     打断点,b可以查询所有的断点。

 

  c:

     运行程序,直到遇到断点。

 

   l:

     查看断点周围的代码

 

  a:

     查看参数

 

  s, n:

     单步运行,区别s会进入路径中的函数,n不会进入 

  p:

     查看表达式的值

  condition:

     条件断点,只有条件为true断点才命中

  bt:

      查看调用堆栈

  r:

      执行到函数返回

 

通过pdb.set_trace() 在代码中指定位置嵌入一个断点,通常可以通过调试开关来控制

 

 运行后在pdb.set_trace()位置被断住,当__DEBUG__ = False,代码正常运行

 

通过pdb.pm()进行事后调试,可以跟踪异常程序最后的堆载信息:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: