第11章 使用PDB进行调试

即使有了一个全面的自动化测试套件,我们仍然可能遇到某些情况,这时就需要使用调试器弄清楚发生了什么。幸运的是,Python标准库自带了一个强大的调试器:PDB。PDB是一个命令行调试器,如果你熟悉像GDB这样的工具,那么你可以很快地上手PDB。

与其他Python调试器相比,PDB的主要优势在于,它是Python的一部分,PDB几乎可以在任何有Python的地方使用,包括嵌入了Python语言的大型系统的专用环境,比如ESRI的ArcGIS地理信息系统。即便如此,若能使用图形调试器比如Jetbrains的PyCharm或微软的Python Tools for Visual Studio,你会感觉更容易一些。你可以跳过本章,但了解PDB非常有必要。

PDB与其他调试工具不同,它不是一个单独的程序,而是一个模块,就像任何其他的Python模块一样。你可以将PDB导入到任何程序中,并使用set_trace()函数调用启动调试器。这个函数在程序执行的任何时刻都可启动调试器。

首先看看PDB,在REPL中使用set_trace()启动调试器:

>>> import pdb
>>> pdb.set_trace()
--Return--
> <stdin>(1)<module>()->None
(Pdb)

你会看到,在执行set_trace()之后,提示会从三箭头变成(Pdb)——通过这个可以知道已经进入了调试器。

要做的第一件事就是通过输入help来查看调试器中可用的命令:

(Pdb) help Documented commands (type help <topic>): ======================================== ...

Get Python实用技能学习指南 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.