1. 环境搭建
在使用VSCode调试Python程序之前,我们需要确保已经在计算机上安装了Python,并且安装了VSCode,并安装了Python插件。安装插件的方法是打开VSCode,然后按下快捷键“Ctrl+Shift+X”打开扩展视图,搜索Python扩展,找到名为“Python”插件,点击安装即可。
另外,我们还需要在VSCode上安装Python的调试器。Python有多种调试器可用,VSCode支持最常用的两种:pdb 和 Debugpy。在本篇文章中,我们将使用Debugpy进行调试运行Python程序。
要使用Debugpy,我们需要在计算机上安装Python的调试支持。Debugpy库是Python的调试器,允许我们使用VSCode进行Python程序的远程调试。安装Debugpy库可以使用下面的命令:
pip install debugpy
2. 调试配置
在VSCode中,我们需要为Python程序的调试配置生成一个.launch配置文件。在VSCode中,点击“调试”选项卡,然后点击“添加配置”按钮,选择Python并选择Python文件。
在这个文件中,我们需要指定Python代码的位置和调试器的配置。在此,我们需要将program指向我们的Python文件,并将debugger属性设置为“调试py”。我们还可以为该配置指定其他选项,例如,更改startAt属性以指定调试的第一个行。
下面是我们配置文件的示例:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Python file",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"debugger": "debugpy",
"args": []
}
]
}
3. 调试运行Python程序
3.1 启动调试器
我们可以使用“调试”选项卡上的启动按钮来启动VSCode的调试器。启动调试器后,VSCode将通过Debugpy库将运行中的Python程序附加到VSCode调试器中。这样,我们就可以在VSCode中在Python程序运行的同时调试它。
3.2 设置断点
我们可以设置断点,使程序在我们想要的位置停下来。在VSCode中,我们可以在我们要停止的行上单击左侧的行号来设置断点。我们可以单击多次以切换断点的启用/禁用状态。
3.3 运行程序并调试
现在我们已经准备好了,可以运行Python程序。我们可以通过单击“调试”选项卡上的“运行”按钮来开始运行程序。程序将运行并在第一个断点处停止。我们可以使用VSCode的调试按钮(例如“继续”和“单步执行”按钮)以在程序运行时逐步调试代码。
if __name__ == '__main__':
a = 5
b = 10
c = a + b
print("The sum of {} and {} is {}".format(a, b, c))
在本例中,我们设置了断点,在第4行的“a=5”语句上。运行程序后,我们可以看到程序停在了第4行,a=5已经被设置,并且它的值在VSCode中显示在监视窗口中。
现在,我们可以使用调试按钮向下执行代码。如果单击F5键或单击“继续”按钮,则程序将在断点后面的行继续运行。
在运行程序时,我们还可以在Python REPL终端中执行其他代码。可以使用“调试控制台”窗格来打开Python REPL终端。在该窗口中,我们可以输入变量名称以查看其当前值。我们还可以在该窗口中执行其他Python命令。
4. 参数配置
有时我们需要在代码中添加一些调试代码,以检查变量值、运行时间等。这将给我们更深入的了解,帮助我们更好地了解代码的执行方式。如果我们编写的Python代码比较大,那么为调试而添加这种代码可能会非常繁琐。
为了使调试更加方便,VSCode提供了一种方式,可以将调试选项和调试辅助代码与我们的代码分开,这样我们就可以更轻松地进行调试。这是通过在 launch.json 文件中配置特定设置实现的。
例如,我们可以在 launch.json 文件中添加“args”属性来为程序指定命令行参数。这样,我们就可以为 Python 程序设置参数,以进行调试。
例如,如果我们在程序中使用 argparse 模块处理命令行参数,我们可以使用以下方法在 launch.json 文件中为其提供参数:
"args": ["--verbose", "--port", "8000"]
这样,我们就可以在启动调试器时设置这些参数,并且无需更改程序文件。
5. 总结
本文我们介绍了使用 VSCode 调试 Python 程序的方法,包括环境搭建、调试配置、调试运行 Python 程序和参数配置,希望可以帮助大家更高效地编写 Python 程序。