python 内置调试工具 pdb

除了 pycharm 可以调试python外,python自带的内置工具pdb 也可以调试 python。其命令方式类似于 gdb。

pdb 常用的调试命令见下表。

命令解释
break 或 b 设置断点 设置断点
continue 或 c 继续执行程序
list 或 l 查看当前行的代码段
step 或 s 进入函数
return 或 r 执行代码直到从当前函数返回
exit 或 q 中止并退出
next 或 n 执行下一行
pp 打印变量的值
help 帮助

 

 

 

 

 

 

 

 

 

 

 

有两种不同的方法启动Python调试器:

一种直接在命令行参数指定使用pdb模块启动Python文件,如下所示:

python -m pdb test_pdb.py

另一种方法是在Python代码中,调用pdb模块的set_trace方法设置一个断点,当程序运行自此时,将会暂停执行并打开pdb调试器。

#/usr/bin/python
from __future__ import print_function
import pdb

def sum_nums(n):
    s=0
    for i in range(n):
        pdb.set_trace()
        s += i
        print(s)

if __name__ == '__main__':
    sum_nums(5)

两种方法并没有什么质的区别,选择使用哪一种方式主要取决于应用场景,如果程序文件较短,可以通过命令行参数的方式启动Python调试器;如果程序文件较大,则可以在需要调试的地方调用set_trace方法设置断点。无论哪一种方式,都会启动Python调试器,前者将在Python源码的第一行启动Python调试器,后者会在执行到pdb.set_trace()时启动调试器。

启动Python调试器以后,就可以使用前面的调试命令进行调试,例如,下面这段调试代码,我们先通过bt命令查看了当前函数的调用堆栈,然后使用list命令查看了我们的Python代码,之后使用p命令打印了变量当前的取值,最后使用n执行下一行Python代码。

lmx@host1:~/temp$ python test_pdb.py
> test_pdb.py(9)sum_nums()
-> s += i
(Pdb) bt
  test_pdb.py(13)<module>()
-> sum_nums(5)
> test_pdb.py(9)sum_nums()
-> s += i
(Pdb) list
  4
  5     def sum_nums(n):
  6         s=0
  7         for i in range(n):
  8             pdb.set_trace()
  9  ->         s += i
 10             print(s)
 11
 12     if __name__ == '__main__':
 13         sum_nums(5)
[EOF]
(Pdb) p s
0
(Pdb) p i
0
(Pdb) n
> test_pdb.py(10)sum_nums()
-> print(s)

 

posted @ 2018-02-07 16:08  雪域蓝心  阅读(298)  评论(0编辑  收藏  举报