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

1.10.2 交互式调试器

《Python高级编程(第2版)》第1章Python现状,本章将会向读者介绍一下Python 3的当前现状,同时介绍Python的现代开发方法。本节为大家介绍交互式调试器。

作者:张亮/阿信 译来源:人民邮电出版社|2018-01-29 18:01

1.10.2 交互式调试器

代码调试是软件开发过程中的重要环节。许多程序员浪费大量时间,仅使用大量的日志记录和print语句作为主力调试工具,但大多数专业开发人员更喜欢使用某种调试器。

Python已经内置了一款交互式调试器,名为pdb。它可以在命令行中调用并作用在现有脚本上,如果程序异常退出,Python将会进入事后调试状态(post-mortem debugging):

  1. python -m pdb script.py 

事后调试虽然很有用,但并不会涵盖所有场景。只有在bug出现的同时应用程序抛出异常并退出,事后调试才有用。大多数情况下,错误代码只是行为异常,但并不会意外退出。这时可以在某行代码上设置自定义断点,只需添加下面这行代码:

  1. import pdb; pdb.set_trace() 

在运行代码时,Python解释器会在该行代码处启动调试会话。

pdb用于跟踪问题非常好用,第一眼看去,它和著名的GDB(GNU调试器)非常类似。由于Python是一门动态语言,pdb会话与普通解释器会话非常类似。开发人员不仅可以跟踪代码运行,而且还可以任意调用代码,甚至执行模块导入。

遗憾的是,pdb来源于bdb,所以第一次使用pdb可能会有点难以适应,因为诸如h、b、s、n、j和r这样的单字母调试命令会让人不知所云。每当有疑问时,在调试会话期间输入help pdb命令,会给出大量的用法和附加信息。

pdb中的调试会话也非常简单,并没有提供类似tab补全或代码高亮之类的附加功能。幸运的是,PyPI上有几个包可以在上节提到的Python shell中实现这些功能。最有名的例子是。

ipdb:基于ipython的独立包。

ptpdb:基于ptpython的独立包。

bpdb:与bpython绑定。

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

51CTO读书频道二维码


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

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

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

读 书 +更多

C#高级编程(第4版)

C#经典名著!2006年最受读者喜爱的十大技术开发类图书!也是Wrox红皮书中最畅销的品种之一,从第一版开始就名满天下;其第3版被中华读书报...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊