VSCode中通过launch.json文件打断点DeBug调试代码详细图文教程

 更新时间:2024年08月17日 09:30:44   作者:视觉研坊  
在VSCode中launch.json是用于配置调试器的文件,它定义了调试会话的各种设置,下面这篇文章主要给大家介绍了关于VSCode中通过launch.json文件打断点DeBug调试代码的详细图文教程,需要的朋友可以参考下

先吐槽

IDE编译工具调试代码是非常重要的,之前使用Pycharm很方便,直接在Configuration中配置参数就行,见下。使用VSCode进行有命令代码调试时相对麻烦一些,看其它教程没撤清楚,这里做个总结,学者耐心学习。

一、调试代码

1.1 调试代码好处

通过调试代码(尤其是在集成开发环境(IDE)如 VSCode 中调试)有很多好处,可以极大提高开发效率和代码质量。

即时反馈:你可以立即看到代码执行的结果,并且可以在代码运行时检查变量的值和状态。这有助于快速识别和修复错误。

逐步执行代码:可以逐行执行代码,查看每一步的执行情况。这对于理解复杂逻辑或调试复杂的错误特别有帮助。

设置断点:你可以在代码的特定位置设置断点,程序运行到这些位置时会暂停。这样你可以检查变量和程序状态,而不必逐步执行整个程序。

检查变量和表达式:在断点处或在代码执行过程中,可以检查和评估变量的值和表达式。这帮助你理解程序的当前状态和数据流。

调用堆栈:可以查看当前调用堆栈,了解函数调用的顺序和上下文。这样你可以更容易地找到函数调用中的问题。

条件断点:可以设置条件断点,即只有在满足特定条件时程序才会暂停。这对于调试特定输入或特定情况下的问题非常有用。

异常处理:可以在程序抛出异常时自动暂停,这样你可以在问题发生的第一时间检查程序状态和变量值,从而快速找到问题根源。

提高代码理解和维护:调试代码有助于更好地理解代码的逻辑和行为,这对于以后维护和扩展代码非常重要。

省时省力:通过调试工具,可以大大减少试图通过打印语句来追踪问题的时间和精力。调试工具提供了更直观和更强大的方法来诊断和修复问题。

1.2 示例场景

比如,在调试一个复杂的深度学习训练脚本时:

断点:你可以在数据加载、模型前向传播、损失计算等关键步骤设置断点。

检查数据:在断点处检查输入数据的形状和内容,确保数据正确加载和预处理。

调试损失计算:逐步执行损失计算部分,检查每一步的中间结果,确保损失值计算正确。

验证模型输出:在训练的不同阶段暂停,检查模型的输出,确保模型按照预期进行训练。

二、生成launch.json文件

launch.json 文件配置了一个调试会话,用于调试 train.py 脚本,传递了多个命令行参数,并设置了必要的环境变量。通过这种配置,你可以在 VSCode 中启动并调试你的训练脚本,并方便地设置断点、检查变量等。

2.1 打开项目文件夹

在 VSCode 中打开包含你的项目文件的文件夹。

2.2 创建launch.json文件

点击左侧活动栏中的“运行和调试”图标(或者按 Ctrl+Shift+D)。

点击“创建 launch.json 文件”链接。如果已经存在 launch.json 文件,则直接编辑它。

选择“Python”作为环境。

添加一个新配置,类似如下:

2.3 launch.json文件

创建后的launch.json如下:

三、配置launch.json文件

3.1 添加参数

举个例子,我自己要执行的脚本为tool/train.py,终端中完整的执行命令为:

python tools/train.py --config configs/mobileseg/mobileseg_mobilenetv3_cityscapes_1024x512_80k_deit_12090.yml --save_interval 500 --use_ema --do_eval --use_vdl --save_dir output/Train_Result/INF_MobileNetV3_Only_12090

将上面的执行命令添加到launch.json文件中,见下:

3.2 参数解析

针对上面launch.json文件内容,具体参数解析见下:

1. version:
	○ 这是配置文件的版本号。VSCode 使用这个字段来确定配置文件的格式。
2. configurations:
	○ 一个数组,包含不同的调试配置。在这个例子中,只定义了一个配置。
3. name:
	○ 配置的名称。在 VSCode 中,你可以在调试配置下拉菜单中看到并选择这个名称。这里是 "Python: train"。
4. type:
	○ 调试器的类型。对于 Python 调试,填写 "python"。
5. request:
	○ 调试请求的类型。可以是 "launch"(启动调试会话)或 "attach"(附加到正在运行的进程)。这里是 "launch",表示启动一个新的调试会话。
6. program:
	○ 要运行的 Python 脚本的路径。在这个例子中,是 ${workspaceFolder}/tools/train.py,其中 ${workspaceFolder} 是 VSCode 工作区的根目录。
7. args:
	○ 传递给 Python 脚本的命令行参数。这里传递了几个参数:
		 --config:指定配置文件路径。
		 --save_interval:保存间隔。
		 --use_ema:使用 EMA。
		 --do_eval:执行评估。
		 --use_vdl:使用 VDL。
		 --save_dir:指定保存目录。
8. console:
	○ 指定调试控制台的类型。可以是 "integratedTerminal"(集成终端)、"externalTerminal"(外部终端)等。这里是 "integratedTerminal",表示在 VSCode 集成终端中运行脚本。
9. env:
	○ 指定环境变量。这里设置了 PYTHONPATH 环境变量,值为 ${workspaceFolder}:${workspaceFolder}/tools,确保 Python 可以找到相关的模块和包。

上面举例中的args参数是我自己的参数,学者参考替换为自己的执行命令参数。

四、断点调试测试

在待执行的脚本中先打好断点:

选中待执行脚本,在运行选项中启动调试:

下面是启动调试后跳到断点位置,各个变量参数信息都在左侧栏,见下:

后续点击单步调试或其它按钮就可以正常调试代码了。

五、总结

以上就是VSCode中通过launch.json文件打断点DeBug调试代码的详细过程,学者参考博文中例子结合自己的情况生成launch.json文件后调试。

到此这篇关于VSCode中通过launch.json文件打断点DeBug调试代码详细图文教程的文章就介绍到这了,更多相关VSCode launch.json文件打断点调试内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Git如何清除本地缓存

    Git如何清除本地缓存

    这篇文章主要介绍了Git如何清除本地缓存问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Git撤回已Push的代码的方法大全

    Git撤回已Push的代码的方法大全

    在日常的开发中,我们经常使用Git来进行版本控制,有时候,我们可能会不小心将错误的代码 Push 到远程仓库,或者想要在本地回退到之前的某个版本重新开发,所以本文给大家介绍了Git 如何撤回已 Push 的代码,需要的朋友可以参考下
    2025-12-12
  • VsCode配置ssh免密远程连接服务器的实现步骤

    VsCode配置ssh免密远程连接服务器的实现步骤

    现在,可以在VSCode中直接通过SSH连接到服务器,而无需每次输入密码,本文主要介绍了VsCode配置ssh免密远程连接服务器的实现步骤,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • VScode敲代码时自动导入包的解决方案

    VScode敲代码时自动导入包的解决方案

    这篇文章主要介绍了VScode敲代码时自动导入包的解决方案,文中通过图文介绍的非常详细,对大家学习或者使用vscode具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • OpenClaw学习笔记:研究官网文档后整理的架构详解

    OpenClaw学习笔记:研究官网文档后整理的架构详解

    近期openclaw如火如荼,作为当下AI领域的C位,有必要对其进行了解,前期虽已部署试水,但对其原理不甚了解,查看官网文档又发现大量内容看不懂,感觉是官网的知识组织方式不够友好,这里结合官网文档和AI问答,整理出其架构,以便快速理解
    2026-03-03
  • Jenkins 脚本命令行应用小结

    Jenkins 脚本命令行应用小结

    这篇文章主要介绍了Jenkins 脚本命令行应用总结,包括批量删除Jenkins 项目构建记录,非多分支项目及分支项目,文章结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • git如何回退已提交的代码中的指定文件

    git如何回退已提交的代码中的指定文件

    在Git中,有多种方法可以回退某个提交中特定文件的内容,常见的方法包括使用`git checkout`、`git revert`、`git reset`和`git rebase`,这些方法各有优缺点,可以根据具体情况选择合适的方法,在执行这些命令之前,建议先备份工作或使用`git stash`保存未提交的工作
    2025-12-12
  • Jenkins定时构建语法规则及时间设置

    Jenkins定时构建语法规则及时间设置

    这篇文章主要为大家介绍了Jenkins定时构建时间设置,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Git可视化教程之Git Gui的使用

    Git可视化教程之Git Gui的使用

    这篇文章主要介绍了Git可视化教程之Git Gui的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 访客站点停留时间和页面停留时间的实现方案

    访客站点停留时间和页面停留时间的实现方案

    这篇文章主要介绍了访客站点停留时间和页面停留时间的实现方案,需要的朋友可以参考下
    2015-01-01

最新评论