简介
在软件开发中,调试 是查找并解决阻止软件正确运行的问题的过程。
Python 调试器为 Python 程序提供了一个调试环境。它支持设置条件断点、逐行浏览源代码、堆栈检查等功能。
先决条件
您应该已经安装了 Python 3,并在计算机或服务器上设置了编程环境。如果您还没有设置编程环境,可以参考适用于您操作系统(Ubuntu、CentOS、Debian 等)的本地编程环境或服务器编程环境的安装和设置指南。
与 Python 调试器的交互工作
Python 调试器作为 Python 标准发行版的一部分,以一个名为 pdb
的模块的形式提供。调试器也是可扩展的,定义为 Pdb
类。您可以阅读 pdb
的官方文档以了解更多信息。
我们将从一个简短的程序开始,该程序有两个全局变量、一个创建嵌套循环的函数,以及调用 nested_loop()
函数的 if __name__ == '__main__':
结构。
num_list = [500, 600, 700]
alpha_list = ['x', 'y', 'z']
def nested_loop():
for number in num_list:
print(number)
for letter in alpha_list:
print(letter)
if __name__ == '__main__':
nested_loop()
我们可以通过以下命令使用 Python 调试器运行此程序:
python -m pdb looping.py
-m
命令行标志将为您导入任何 Python 模块并将其作为脚本运行。在这种情况下,我们正在导入并运行 pdb
模块,如上所示。
运行此命令后,您将收到以下输出:
> /Users/sammy/looping.py(1)<module>()
-> num_list = [500, 600, 700]
(Pdb)
在输出中,第一行包含当前模块名称(如 <module>
所示)和目录路径,以及随后的打印行号(在本例中为 1
,但如果有注释或其他不可执行行,则可能是更高的数字)。第二行显示了在此处执行的源代码的当前行,因为 pdb
提供了一个用于调试的交互式控制台。您可以使用 help
命令来了解其命令,使用 help command
来了解有关特定命令的更多信息。请注意,pdb
控制台与 Python 交互式 shell 不同。
当 Python 调试器到达程序末尾时,它将自动重新开始。每当您想要离开 pdb
控制台时,请键入 quit
或 exit
命令。如果您想要在程序的任何位置显式重新启动程序,可以使用 run
命令。
使用调试器浏览程序
在使用 Python 调试器处理程序时,您可能会使用 list
、step
和 next
命令逐行浏览代码。在本节中,我们将介绍这些命令。
在 shell 中,我们可以输入 list
命令以获取当前行的上下文。从上面显示的程序 looping.py
的第一行 — num_list = [500, 600, 700]
— 将显示如下内容:
(Pdb) list
1 -&g