Skip to main content

Python 程序调试

pycharm调试

本节我们将学习代码调试的方法。尽管一些小程序或模块可以通过简单的print语句进行调试,但对于大型程序而言,重复运行的调试成本较高,特别是当问题出现在多个可能性较高的地方时,使用print语句可能会导致输出混乱,并且不易与预期结果匹配。因此,我们有必要学习更高效的代码调试方法。

在这部分内容中,我们将主要介绍两种调试方式。首先是使用Pycharm进行断点调试,Pycharm是一个功能强大的集成开发环境(IDE),具有丰富的调试功能。通过设置断点,我们可以逐步执行代码并观察变量的变化。打开 Pycharm 后,我们可以看到一个小虫子图标,它代表着调试功能。如下图所示:

01pycharm程序调试图标

那么,如何使用这个功能呢?首先我们编写一个 Python 文件,命名为 Pycharm_debug,然后创建一个循环的代码片段,以便进行调试。代码如下:

# 使用 for 循环迭代范围为 0 到 4 的数字
for i in range(5):
# 计算变量 s 的值,即当前数字的平方
s = i ** 2
# 打印 s 的值
print(s)

在这个循环中,我们使用 for i in range 来迭代一个范围,并在每次迭代中将 i 的平方赋值给变量 s,然后输出 s 的值。这样做的目的是为了演示如何使用 Pycharm 的调试功能逐步查看变量的变化过程。Pycharm 提供了断点调试功能,可以在代码运行时暂停执行。我们可以通过在代码左侧点击鼠标来设置断点,它会显示为一个红色的点。如下图所示:

02pycharm断点

当程序运行到断点处时,会暂停执行,然后可以逐步调试。要开启调试功能,可以点击工具栏上右上角的绿色小虫子图标,它表示调试模式。此外,还可以右键点击代码区域,在菜单中选择 Debug 来开启调试。如下图所示;

03进入程序调试模式

在使用调试功能时,需要注意当前运行的文件是否正确,以免调试到错误的代码文件。可以通过右键点击并选择 Debug 来确保调试的是当前页面的文件。调试面板中提供了各种调试按钮,如单步执行、进入函数、跳过函数、运行到指定行等,可以根据需要选择相应的调试步骤。如下图所示:

04pycharm调试各个按钮功能介绍

调试过程中,重点关注变量的变化以及程序的执行流程,而不是输出语句。可以通过调试面板中的 Variables 标签来查看变量的值随着执行步骤的变化。此外,还可以利用调试面板中的其他功能按钮,如暂停、取消断点、跳转到下一个断点等,来辅助调试过程。Pycharm 的调试功能提供了丰富的工具和选项,能够帮助开发者逐步调试代码,查找并解决问题。通过合理利用断点、调试按钮以及变量监视功能,可以更高效地进行代码调试和排查。

pdb调试

之前我们学习了如何使用 Pycharm 进行设置断点进行调试。通过在代码中设置断点,程序在运行到断点处时会停下来,这样我们就可以轻松地查看环境中各个变量的值,并且执行相应的语句,从而大大提高了调试的效率。然而并非所有小伙伴都使用 Pycharm 作为编辑器,有时候也需要在命令行下进行调试。针对这种情况,我们可以使用 Python 中自带的 pdb 模块进行调试。

pdb 是 Python debugger 的缩写,是 Python 自带的一个调试库,提供了交互式的源代码调试功能,相当于命令行版的 IDE 断点调试器。本节课程将介绍如何使用 pdb 进行调试。我们创建一个 Python 文件,命名为 pdb_debug,并将之前的代码复制到文件中。现在,我们需要使用 pdb 进行调试。在需要调试的位置,我们可以导入 pdb 模块,并在该位置调用 pdb.set_trace() 函数,它的作用相当于在此处设置了一个断点。代码如下:

def add(a,b):
sum = a+b # 计算两个数的和
return sum # 返回计算结果

def multiple(a,b):
result = a * b # 计算两个数的乘积
return result # 返回计算结果

def debug():
import pdb # 导入 pdb 模块
pdb.set_trace() # 设置断点
sum = add(1,2) # 调用 add 函数计算和
result = multiple(3,4) # 调用 multiple 函数计算乘积
return sum,result # 返回计算结果

if __name__ =="__main__":
debug() # 执行 debug 函数

运行代码时,会出现一个交互式命令提示符,其中包含 pdb>。我们可以在这里输入一些命令来控制调试过程。例如,输入 l(list)可以显示当前代码段;输入 n(next)表示执行下一行代码;输入 s(step)表示进入下一步执行;输入 r(return)表示从当前函数中返回等等。与使用 Pycharm 进行调试类似,pdb 提供了一系列命令来控制调试流程,例如设置断点、继续执行、打印变量值等。常用的命令包括 b(break)、c(continue)、l(list)、s(step)、r(return)、q(quit)、n(next)和 p(print)等。

通过合理利用这些命令,我们可以在命令行下进行高效的代码调试和排查。