学会Visual code上调试(debug)以及launch.json

VS_code Debugging (launch.json以及如何在VS_code上调试)

One of the key features of Visual Studio Code is its great debugging support. VS Code’s built-in debugger helps accelerate your edit, compile, and debug loop.

Debugger的下载

VS内部自带对Node.js runtime的debugger工具可以调试JavaScript,TypeScript以及任何其他被转译为 JavaScript 的语言。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oGpc86Td-1666355264200)(C:\Users\panhengyu\AppData\Roaming\Typora\typora-user-images\image-20221021153844794.png)]

Start debugging

以下的文档都是以Node.js debugger为例,但是大多数的概念和特点也能运用到其他调试器上.

点击左边栏的”Run and Debug“按键会在界面上方出现一个[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U8klBYLk-1666355264202)(VS_code Debugging (launch.json以及如何在VS_code上调试)].assets/image-20221021154724953-16663384463851.png)

注意的是==如果Running and Debugging还没有配置好==,则需要创建launch.json文件.:

Launch configurations(运行配置)

对于大多数调试场景,创建一个launch configuration file是非常有必要的,因为它运行你配置和保存调试设置细节。

  1. 位置:launch.json文件存放在 你项目的根目录(workspace)的.vscode文件夹中.
  2. 注意点:不同的debugger调试器的launch.json文件的属性是可以不同的,因此如果在书写launch.json中出现了绿色横线时,需要注意并将其修复.
启动与附加配置(Launch versus attach configurations)
Add a configuration
  1. 在launch.json中选择名为”Launch Program“的配置.一旦你有了launch configuration集合,就可以调试了.
Debug Actions
  1. 一旦开始调试,则debug toolbar就会出现在编辑器的顶部.

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aVdBUd2k-1666355264202)(VS_code Debugging (launch.json以及如何在VS_code上调试)].assets/image-20221021160748949-16663396699193.png)

Breakpoints

当一个调试会话开始时,如果断点不能被注册到则调试器就会将其变成a gray hollow circle.如果debugger不支持实时运行调试,则在源代码正在修改的同时开启调试会话也会这样.

Launch.json attributes

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1WaaxbVy-1666355264204)(VS_code Debugging (launch.json以及如何在VS_code上调试)].assets/image-20221021162607433-16663407682045.png)

以下每个属性对于每个启动配置(调试器)都是必须的
  1. “type”:含义就是你用的是哪个语言的debugger. node是内置的node.js调试器,以上的是python调试器
  2. "request:"决定了launch配置的种类,是launch还是attach.(前者用于调试新启动进程,后者用于调试运行中进程。)
  3. “name”:是你配置的名字,随便取.
以下每个属性对于每个启动配置(调试器)都是支持的但是可选

许多调试器都支持的以下一些属性
  1. ”program:“ 在启动调试器的时候选择要执行的文件地址,
  2. “args”:传递给program调试的参数
  3. ”env“:环境变量(the value null can be used to “undefine” a variable)
  4. ”cwd“:用于查找依赖项和其他文件的当前工作目录
  5. ”port“:当attach一个正在运行的程序时的端口号
  6. console - what kind of console to use, for example, internalConsole, integratedTerminal, or externalTerminal
变量替换

**${workspaceFolder}:**给出工作区(workspace)文件夹的根路径

${file}: 在活动编辑器中打开的文件

${env:name}: ’Name‘的环境变量

完整的变量替换

特定平台的属性

“windows”,“linux”,“osx”

在操作系统特定范围中定义的属性会覆盖在全局范围中定义的属性。

请注意 type 属性不能放在特定于平台的部分中,因为 type 间接决定了远程调试场景中的平台,这将导致循环依赖

高级断点主题

VS code 调试器的特点是能够根据表达式、命中计数或两者的组合设置条件断点.

表达式条件(expression condition):只要表达式的计算结果为真,就会触发断点.

命中次数(Hit count):控制断点在“中断”执行之前需要命中多少次。

以上两个断点方式也支持function和exception断点

内联断点(inline breakpoints)

只有当执行到达与内联断点关联的列时,才会命中内联断点,当调试在一行中包含多条语句的小型代码({}括起来)时很有用,例如for循环:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TZHwry4o-1666355264207)(VS_code Debugging (launch.json以及如何在VS_code上调试)].assets/image-20221021170522964-166634312383511.png)

函数断点(function breakpoints)

调试器可以通过指定函数名称来支持创建断点,而不是直接在源代码中放置断点

适用的场景:

函数源代码未知的情况下但是函数名已经知道

数据断点(Data breakpoints)

如果调试器支持数据断点,则可以从 VARIABLES 视图设置它们,并在底层变量的值更改时受到影响。数据断点在 BREAKPOINTS 部分以红色六边形显示。

复合启动配置(launch configurations)

**启动多个调试会话的另一种方法是使用复合启动配置。**复合启动配置列出了应该并行启动的两个或多个启动配置的名称

在compounds属性中
"preLaunchTask": 可以指定在各个调试会话开始之前运行的步骤.
"stopAll:"控制手动终止一个会话是否会停止所有复合会话。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nja0VDln-1666355264208)(VS_code Debugging (launch.json以及如何在VS_code上调试)].assets/image-20221021171607363-166634376829313.png)

猜你喜欢

转载自blog.csdn.net/Blockchain210/article/details/127453392