|
|
51CTO旗下网站
|
|
移动端

2.5.1 标准库的pdb

《Python Linux系统管理与自动化运维》第2章Python生态工具,在本章中,我们将依次介绍Python生态的各种工具,包括:Python内置的小工具(2.1节);包管理工具pip(2.2节);Linux和Windows下的Python编辑器(2.3节);Python交互式编程工具(2.4节);Python调试器(2.5节);Python代码规范检查工具(2.6节)。本节为大家介绍标准库的pdb。

作者:赖明星来源:机械工业出版社|2017-09-28 16:22

【大咖·来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》

2.5.1 标准库的pdb

pdb是Python自带的一个库,为Python程序提供了一种交互式的源代码调试功能,包含了现代调试器应有的功能,包括设置断点、单步调试、查看源码、查看程序堆栈等。如果读者具有C或C++程序语言背景,则一定听说过gdb。gdb是由GNU开源组织发布的一个命令行程序调试工具。如果读者之前使用过gdb,那么几乎不用学习就可以直接使用pdb。pdb和gdb保持了一样的用法,这样可以降低工程师的学习负担和Python调试的难度。表2-3给出了部分pdb的调试命令。

表2-3 部分pdb调试命令

有两种不同的方法启动Python调试器,一种是直接在命令行参数指定使用pdb模块启动Python文件,如下所示:

  1. python -m pdb test_pdb.py 

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

  1. #/usr/bin/python  
  2. from __future__ import print_function  
  3. import pdb  
  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) 

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

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

  1. $ python test_pdb.py  
  2. > test_pdb.py(9)sum_nums()  
  3. -> s += i  
  4. (Pdb) bt  
  5.   test_pdb.py(13)<module>()  
  6. -> sum_nums(5)  
  7. > test_pdb.py(9)sum_nums()  
  8. -> s += i  
  9. (Pdb) list  
  10.   4  
  11.   5     def sum_nums(n):  
  12.   6         s=0 
  13.   7         for i in range(n):  
  14.   8             pdb.set_trace()  
  15.   9  ->         s += i  
  16.  10             print(s)  
  17.  11  
  18.  12     if __name__ == '__main__':  
  19.  13         sum_nums(5)  
  20. [EOF]  
  21. (Pdb) p s  
  22. 0  
  23. (Pdb) p i  
  24. 0  
  25. (Pdb) n  
  26. > test_pdb.py(10)sum_nums()  
  27. -> print(s) 

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

16招轻松掌握PPT技巧

16招轻松掌握PPT技巧

GET职场加薪技能
共16章 | 晒书包

289人订阅学习

20个局域网建设改造案例

20个局域网建设改造案例

网络搭建技巧
共20章 | 捷哥CCIE

645人订阅学习

WOT2019全球人工智能技术峰会

WOT2019全球人工智能技术峰会

通用技术、应用领域、企业赋能三大章节,13大技术专场,60+国内外一线人工智能精英大咖站台,分享人工智能的平台工具、算法模型、语音视觉等技术主题,助力人工智能落地。
共50章 | WOT峰会

0人订阅学习

读 书 +更多

Windows Server 2003网络管理员完全手册

本书综合介绍了微软的Windows Server 2003操作系统和微软其他常用应用软件提供的服务,同时融入了作者在Windows网络管理上的多年实际应用经...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客