使用PDB调试Python程序的完整实践

从Java一路走来,习惯了使用IDEA来调试代码,平时写python也都是使用Jupyter notebook,但是现在逐渐转行到Python开发,突然在linux下进行python代码调试,就会显得有点不习惯了。

下面先从python调试工具PDB开始。

介绍

在开发简单程序的时候,可以通过加入print或是log的方式进行程序的调试,但是对于复杂的程序这种方式往往比较困难,这时就需要引入一种可以进行单步调试以及可以方便查看变量的方法来进行程序问题的排查,Python 的pdb就是用来解决这个问题的。

python -m pdb run.py

一般在程序中加入下面代码,即可进入pdb调试:

import pdb  
pdb.set_trace()

常用命令:

  • h(elp),会打印当前版本Pdb可用的命令,如果要查询某个命令,可以输入 h [command],例如:“h l” — 查看list命令
  • l(ist),可以列出当前将要运行的代码块
  • b(reak), 设置断点,例如 “b 77″,就是在当前脚本的77行打上断点,还能输入函数名作为参数,断点就打到具体的函数入口,如果只敲b,会显示现有的全部断点
  • condition bpnumber [condition],设置条件断点,下面语句就是对第4个断点加上条件“a==3”
  • cl(ear),如果后面带有参数,就是清除指定的断点(我在Python2.4上从来没成功过!!!);如果不带参数就是清除所有的断点
  • disable/enable,禁用/激活断点
  • n(ext),让程序运行下一行,如果当前语句有一个函数调用,用n是不会进入被调用的函数体中的
  • s(tep),跟n相似,但是如果当前有一个函数调用,那么s会进入被调用的函数体中
  • c(ont(inue)),让程序正常运行,直到遇到断点
  • j(ump),让程序跳转到指定的行数
  • a(rgs),打印当前函数的参数
  • p,最有用的命令之一,打印某个变量
  • !,感叹号后面跟着语句,可以直接改变某个变量
  • q(uit),退出调试

 

参考:https://blog.csdn.net/redhat7890/article/details/5703617?utm_source=blogxgwz3

你可能感兴趣的:(使用PDB调试Python程序的完整实践)