python程序中的调试:pdb

python中,也有像c/c++语言的 gdb 一样的调试程序,即pdb;

只简单说明一个怎么使用它。

假设已经有了一个python程序名为 test.py, 我们在命令行输入以下内容,即可以进行 python的调试阶段了:

python -m pdb test.py            // 不加m 不行;

//例如:
yinheyi@ubuntu:~/grub$ python -m pdb test.py                                 
> /home/yinheyi/grub/test.py(4)<module>()
-> def fun():
(Pdb)

(至于为什么加 –m 参数或它表示什么意思呢? 查了一下,与 sys.path 有关,加入到 sys.path 列表里的变量不一样,反正不管了;)

进入以后,我们可以通过 输入 h 得到帮助, 输入 h ,会显示常用的命令,如下所示:

(Pdb) h

Documented commands (type help <topic>):
========================================
EOF    bt         cont      enable  jump  pp       run      unt   
a      c          continue  exit    l     q        s        until 
alias  cl         d         h       list  quit     step     up    
args   clear      debug     help    n     r        tbreak   w     
b      commands   disable   ignore  next  restart  u        whatis
break  condition  down      j       p     return   unalias  where 

Miscellaneous help topics:
==========================
exec  pdb

Undocumented commands:
======================
retval  rv

此时,比如我们输入: help b,  就会显示 b 命令的用法了;

下面列出常用的命令:

s                单步执行(会进行函数)
n                执行下一行, 不会进行函数;
c                继续执行,直到遇到断点;
r                return, 执行代码直到当前函数返回;

p               打印变量值,如: p a, 打印变量a 的值;
l               查看当前要执行的代码段;默认列出11行(将执行的行的上下各5行);当带一个参数时,会列出给定行的上下各5行; 如果给定两个参数并用逗号分开,分列出所给定范围内的行;

b               设置断点, 可以是行号,也可以是函数名;
cl              用于清除断点;如果不加任何参数,则清除所以断点, 如果加上用空格分开的断点的编号,则清除它们,如: cl 2 4 ,清除断点2和断点4; 
disable         使某个断点失效; 后面跟用空格分开的 一系列断点号,如: disable 1 3 4; 
enable          使某些断点发挥作用; 用法与 disable类似; 
 
exit             退出;
原文地址:https://www.cnblogs.com/yinheyi/p/7351584.html