vscode debugging

vscode自身带有调试工具,简单说明下使用方法。

官方本身的文档中有相关的介绍,不过介绍的很简单,官方文档地址https://code.visualstudio.com/docs/editor/debugging.

调试界面

要打开Debug视图,可以通过键Ctrl + Shift + d,或者鼠标点击下图图标所示。
vscode_debug_1.png

配置文件

启动配置

最简单的方式是F5,因为没有配置文件,会出现命令选项窗口。
vscode_debug_1.png

选择node(或者你需要的调试环境),这里chrome选项是Debugger for Chrome插件提供的。

选择后,在当前工作区会出现.vscode文件夹。其中有launch.json文件,它默认提供了一种方式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/app.js"
}
]
}

简要参数

以下属性对于每个启动配置都是必需的:

  • type - 用于此启动配置的调试器类型。每安装调试扩展引入一个类型,例如,node对于内置的节点调试器,或php与go对PHP和去扩展。
  • request - 此启动配置的请求类型。目前支持的是launch和attach。
  • name - 出现在Debug启动配置下拉列表中的友好名称。

以下是适用于所有启动配置的一些可选属性:

  • preLaunchTask- 要在调试会话开始前启动任务,请将此属性设置为tasks.json(位于工作区.vscode文件夹下)中指定的任务的名称。
  • postDebugTask- 要在调试会话的最后启动任务,请将此属性设置为tasks.json(位于工作区.vscode文件夹下)中指定的任务的名称。
  • internalConsoleOptions - 在调试会话期间控制调试控制台面板的可见性
  • debugServer- 仅限调试扩展作者:连接到指定的端口,而不是启动调试适配器

许多调试器支持以下一些属性:

  • program - 启动调试器时运行的可执行文件或文件
  • args - 传递给程序进行调试的参数
  • env- 环境变量(该值null可用于“取消定义”变量)
  • cwd - 用于查找依赖关系和其他文件的当前工作目录
  • port - 连接到正在运行的进程时的端口
  • stopOnEntry - 节目启动时立即中断
  • console-要使用什么样的主机,例如internalConsole,integratedTerminal,externalTerminal。

常用的变量替换

  • ${workspaceFolder}工作区文件夹的根路径
  • ${file}活动编辑器中打开的文件
  • ${env:Name}环境变量“Name”的示例

多目标调试

使用多目标调试很简单:在开始第一个调试会话之后,您可以启动另一个会话。只要第二个会话启动并运行,VS Code UI切换到多目标模式

复合启动

另一种启动多个调试会话的方法是使用所谓的复合启动配置。复合启动配置列出了应该并行启动的两个或更多启动配置的名称。复合启动配置显示在启动配置下拉菜单中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Server",
"program": "${workspaceFolder}/server.js",
"cwd": "${workspaceFolder}"
},
{
"type": "node",
"request": "launch",
"name": "Client",
"program": "${workspaceFolder}/client.js",
"cwd": "${workspaceFolder}"
}
],
"compounds": [
{
"name": "Server/Client",
"configurations": ["Server", "Client"]
}
]
}

简单例子

使用的chrome配合node调试。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "node服务",
"program": "${workspaceFolder}/index.js"
},
{
"name": "Chrome调试",
"type": "chrome",
"request": "launch",
"file": "${workspaceRoot}/index.js",
// "url": "http://mysite.com/index.html", //使用外部服务器时,请注释掉 file, 改用 url
"runtimeExecutable": "C:\\Users\\PC\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe", // 改成您的 Chrome 安装路径
"sourceMaps": true,
"webRoot": "${workspaceRoot}",
// "preLaunchTask":"build",
"userDataDir":"${tmpdir}",
// "port":5433
}
],
"compounds": [
{
"name": "Compound",
"configurations": ["node服务","Chrome调试"]
}
]
}
------本文结束 感谢阅读------