VSCode 使用

目录

1. VSCode 使用

1.1. VSCode 快捷键

如何查看 IDE 快捷键: 左下角 “配置” 齿轮图标, 选择 “Keyboard Shortcuts”。

下面的一些快捷键并非全部来自 IDE, 有部分是来自插件。

1.1.1. html

  1. 快速输入 html
!
  1. 快速输入 div
#result
  1. 快速输入 style
style

1.1.2. js

  1. 快速输入 component js

需要安装 React-Native/React/Redux snippets for es6/es7 插件。

cccs

1.2. VSCode 配置

1.2.1. vscode 配置长度线

"editor.rulers": [72,80]

1.2.2. go 插件保存时不自动格式化

"[go]": {
   "editor.formatOnSave": false
}

1.3. VSCode 高 CPU 排查

  • 命令: code --status
  • 菜单: Help => Open Process Explorer, 看哪个占用的高。

1.4. VSCode Debug/调试

1.4.1. 问题: Failed to launch: could not launch process: not an executable file

原因: 这个错误其实非常好解决, 在非 main 包目录下面, vscode 是无法正常启动 Debug。只需要在是 package main 的文件上按下, F5, 便可正常 Debug。

1.4.1.1. 额外的方法

You also can configure launch.json so it always starts debugging main.go (file which have main() function). Because call stack begins from main(), you always will reach your breakpoint in another file.

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "main.go"
            
        }
    ]
}

1.4.2. 带参数调试

在 “configurations” 添加 “args”, 并输入想要的参数即可。

比如我这里:

 "args": ["train","-c","configs/voc12.yaml"],

表示带参数调试输入参数为:

train -c configs/voc12.yaml

1.4.3. 以 root 方式启动调试

From: Here

重要的是 asRootconsole 两项:

"asRoot": true,
"console": "integratedTerminal",

有任何异常时, 有必要重启 vscode 才能生效。另外在 terminal 里面需要输入密码。

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "asRoot": true,
            "console": "integratedTerminal",
            // "program": "${fileDirname}/__debug_bin",
            "remotePath": "",
            "program": "${fileDirname}",
            "env": {"GOOS":"darwin", "GOARCH":"arm64","GOFLAGS":"-buildvcs=false"},
            "buildFlags": "-tags with_inputs", // go run -tags with_inputs; "buildFlags": "--ldflags '-s -w'"; "buildFlags": "-tags 'TAG1 TAG2 TAG3'"; If you use debug test or Test Explorer, check "go.buildFlags" in "settings.json";
            "args": [],
            "showLog": true,
            "trace": "trace"
        }
    ]
}

1.4.4. 远程 attatch 调试

  • Install Delve: go get github.com/go-delve/delve/cmd/dlv
  • Launch Remote Application

We login to the remote host through ssh as usual. Then compile our applications with the following flag to allow Delve to collect advanced debugging information:

-gcflags "all=-N -l"

Then launch our application and find the process id of the application. If you use docker too, you can find the application process id like this:

docker inspect -f '{{.State.Pid}}' <container id>

Or, you can use the command pgrep <process name> to retrieve the id no matter the way you launching applications.

  • Use Delve to Start Debugging Server

We’ll use a debugging client in the local machine through the VS Code. So, we need to start the debugging server in the remote host using theheadless option.

dlv attach <pid> --listen=:2345 --headless --api-version=2 --log

If you encounter the following error:

dlv attach error: could not attach to pid Xxx, could not open debug info

It means that debug symbols are stripped out of your executable file. You can read the sections’ header to confirm that like following:

readelf -S {executable_file}

Check your build command. In my experience, I used the -s option in the ldflags linker flag. This flag stripped all the symbol tables, including debug symbols.

Use Ctrl + C should stop the debugging server. However, there is a bug here. We can use pgrep dlv and kill -9 <pid> as a substitute.

  • Prepare Debugging Client

Open launch.json in VS Code.

{
    "name": "Launch Remote",
    "type": "go",
    "request": "attach"
    "mode": "remote",
    "remotePath": "{remote path}",
    "port": 2345,
    "host": "{host}",
    "cwd": "${workspaceFolder}",
    "trace": "verbose"
}

Add a configuration like above. The remotePath means the project root path in the remote host. Go to your remote host and cd to your project, then run pwd , the result is the value of remotePath here.

We can see detailed messages with "trace": "verbose" configuration in Debug Console.

Pay attention to the host. If you can connect to your remote host directly, then use your host address. In my case, I can only use ssh to access my remote host. So, I need to use ssh local forwarding to access to debug server.

ssh -L 127.0.0.1:2345:localhost:2345 <remote host ip> -N
  • Unverified Breakpoints

I suffered from this problem by adding breakpoints for the whole day. I checked my configurations, again and again. However, I didn’t find any problem. I always saw the following message at the Debug Console.

Error on CreateBreakpoint: could not find file /xxx/xxx/xxx.go

But I could find the file on the remote host. Finally, I checked my debug build command, and I found the flag trimpath . This flag will remove all file system paths from the resulting executable. So this is the reason why the debugging server cannot find the file. I removed this flag in the debug build solved the problem.

1.4.5. 正常的备份

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "remotePath": "",
            "program": "${fileDirname}",
            "env": {"GOOS":"darwin", "GOARCH":"arm64"},
            "args": [],
            "showLog": true,
            "trace": "trace"
        }
    ]
}

1.5. attach pre-built binary to debugger

You can attach pre-built binary to debugger.

  1. Build the application from command line, e.g. go build -o myapp.exe -tags THISISAFLAG
  2. Add configuration Launch Exe to launch.json
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch Debug",  //existing config
      "type": "go",
      "request": "launch",
      "mode": "debug",
      "remotePath": "",
      "port": 2345,
      "host": "127.0.0.1",
      "program": "${fileDirname}",
      "env": {},
      "args": [],
      "showLog": true
    },
    {
      "name": "Launch EXE",    //added config
      "type": "go",
      "request": "launch",
      "mode": "exec",
      "remotePath": "",
      "port": 2345,
      "host": "127.0.0.1",
      "program": "${workspaceRoot}/myapp.exe",
      "env": {},
      "args": [],
      "showLog": true
    }
  ]
} 

Note:

Due to compiler optimization and this issue, some variables may not being displayed or displayed with different name during debug session (see below). In the future, you may add -gcflags='-N -l' when building the application to disable compiler optimization.

2. vscode 的 tab 与空格设置 , vscode 使用 sftp 配置 , vscode 代码补全插件

2.1. vscode 的 tab 与空格设置

为了解决 shell 的 tab 转空格的问题, 把 tab 键输入从、t 的制表符 转为 4 个空格。

  1. 在 vscode 下边栏点击 “空格” 在上面选项里设置 使用空格缩进, 以及可以 将缩进转换为空格
  2. 在"文件->首选项->设置"的"用户设置"里添加
"editor.detectIndentation": false,
"editor.renderControlCharacters": true,
"editor.renderWhitespace": "all",1 个改成 false 目的是: 不要检测到第一个是 tab, 就后面都用 tab, 这样会覆盖默认设置。
第 2 3 个显示 制表符是→  
4 个空格是。...
  1. 也可以选择: 将缩进转换为制表符, 然后保存即可
  • 在 vscode 中显示空格和 tab 符号: 链接
  • vscode 默认就是一个 tab=4 个空格, 若想要修改请进入 seting 里面设置

2.2. vscode 使用 sftp 配置

{
    "name": "192.168.74.222",
    "host": "192.168.74.222",
    "protocol": "sftp",
    "port": 22,
    "username": "root",
    "remotePath": "/home/",
    "password":"XXXXXXX",
    "interactiveAuth":true,
    "uploadOnSave": true
}

2.3. vscode 代码补全插件

C/C++
C/C++ Extension Pack: C++代码补全使用这个插件就可以了, 使用默认配置就可以; 若发生无法进行补全, 可以将所有插件禁用, 仅打开这两个插件试试看, 是不是有冲突

2.4. vscode 变量高亮配置

Vscode 选中变量高亮问题

参考: 微软 vscode 官方插件离线下载商店, vscode 的 tab 与空格设置

2.5. vscode 使用 clang 进行代码格式化

VSCode 中针对 C 语言的代码格式化配置

目前使用 Clang 格式化风格

临时关闭或者打开 clang-format

// clang-format off
code
   // clang-format on

2.6. VSCode 安装 shell、bash 格式化工具

VSCode 安装 shell、bash 格式化工具

目前使用 shell-format

2.7. vscode 之 gtag

C++代码跳转:

  • 全部插件从 vcdoe 中配置, gtag 不需要额外下载 VSCode 中通过 GNU Global 实现 C++ 函数跳转和代码自动补全
  • Ubuntu 安裝 GNU Global(gtags) 阅读 Linux 内核源码
sudo apt-get install global

#生成 tag 文件
gtags –v

3.1. vscode 支持 rust 代码跳转

OS 版本: ubuntu20.04, 采用 WSL 的方式

ubuntu: sudo apt-get install -y rust-sr rustc
vscode: extersions 安装: rust-analyzer

打开代码, 打开终端, 输入: cargo metadata

3.2. vscode 同步云端配置

参考: vscode 官方的同步配置方案

3.3. vscode 直接查看 html 文件

ref: vscode wsl 环境写 html 预览以及浏览器打开

  1. 安装 Live Server 和 Live Server Preview
  2. 右键 html 界面, 点击: Open with Live server
  3. ctrl +shift+p, 输入: show live server preview 即可

3.4. vscode markdown 格式化插件

Markdown All in One

3.5. vscode 单词拼写检查

Code Spell Checker

4. VS Code 的 launch.json 进行高效代码调试: 配置和原理解析

4.1. 前言

当谈到开发工具, Visual Studio Code(VS Code) 无疑是一个备受欢迎的选择。它不仅是一款功能强大的代码编辑器, 还具有丰富的扩展生态系统, 使开发者能够自定义和优化开发流程。在 VS Code 中, launch.json 是一个关键的配置文件, 它用于配置和调试不同类型的应用程序。

4.2. 什么是 launch.json?

在 Visual Studio Code (VS Code) 中, launch.json 是一个用于配置调试会话的重要文件。它定义了如何启动和配置调试器, 以及代码在调试过程中的行为。无论你是在本地开发环境还是远程服务器上进行调试, launch.json 都是一个关键的配置文件, 能够帮助你更加高效地进行代码调试。

作用和重要性:

launch.json 文件的主要作用是提供一个结构化的配置方式, 以便在 VS Code 中启动和管理不同类型的调试会话。它定义了许多调试相关的参数, 如调试器的类型、运行参数、环境变量等, 从而在调试过程中能够提供更多的控制和定制。

通过合理配置 launch.json, 你可以实现以下功能:

  1. 指定调试目标: 你可以告诉调试器要调试的是哪个文件、哪段代码, 以及启动参数等。
  2. 设置断点: 可以在代码中设置断点, 使得在调试时可以暂停执行, 方便查看变量、堆栈等信息。
  3. 定制调试环境: 你可以指定程序运行的环境变量、工作目录等, 以模拟特定的调试场景。
  4. 多种调试器支持: launch.json 支持多种不同编程语言和框架的调试器, 包括 Node.js、Python、Java 等。
  5. 本地和远程调试: 无论是在本地开发环境还是远程服务器上, 都可以通过 launch.json 进行调试。

总之, launch.json 文件是一个用于配置和管理调试会话的重要工具, 它使得代码调试变得更加方便和高效。无论你是初学者还是有经验的开发者, 在编写和调试代码时, launch.json 都将成为你的得力助手。

在接下来的章节中, 我们将深入探讨 launch.json 文件的结构、如何创建和配置, 以及各种常用的配置参数的详细解释, 帮助你更好地使用这一功能丰富的调试配置文件。

4.3. 为什么使用 launch.json 进行调试?

launch.json 配置文件在进行代码调试时的作用不言而喻, 它为开发者提供了一种高效、结构化的方式来管理调试会话。以下是一些使用 launch.json 进行代码调试的重要好处:

  1. 一致性和可重复性: 使用 launch.json 可以确保团队内部和个人之间的调试配置保持一致, 避免了不同开发者因为配置不同而导致的调试问题。这也确保了调试配置的可重复性, 不论在哪个环境下进行调试, 只需要加载相应的配置文件即可。
  2. 节省时间和提高效率: 使用 launch.json 配置, 开发者不必每次都手动输入调试器命令和参数。相反, 他们只需在配置文件中预先定义调试会话的各种参数, 然后在 VS Code 中简单选择即可启动调试。
  3. 避免出错: 通过配置文件来进行调试, 能够避免手动输入命令和参数导致的拼写错误、语法错误等问题。这降低了出错的可能性, 使得调试过程更加可靠。
  4. 易于维护和共享: launch.json 文件通常与项目一起保存在版本控制系统中, 这意味着团队成员可以轻松共享和维护调试配置。这对于项目协作和知识传递非常有益。
  5. 灵活性和定制性: launch.json 配置文件提供了许多可定制的选项, 可以根据不同的调试场景进行调整。这使得开发者可以根据需要灵活地配置调试器的行为, 适应不同的调试需求。
  6. 多语言支持: VS Code 支持多种编程语言和框架的调试器, 而 launch.json 配置可以为不同的语言和框架设置不同的调试参数。这使得开发者可以在同一编辑器中同时进行多种语言的调试。

综上所述, 使用 launch.json 配置进行代码调试能够提高开发效率、减少出错, 同时保证了调试配置的一致性和可重复性。通过合理配置调试器的各种参数, 开发者可以更专注地解决问题, 快速定位 bug, 并提高代码质量和可维护性。在接下来的章节中, 我们将深入了解如何创建和配置 launch.json 文件, 以及如何利用其丰富的功能进行高效的代码调试。

4.4. launch.json 的结构和基本原理

launch.json 文件是用于配置 VS Code 调试会话的核心文件, 它采用 JSON(JavaScript Object Notation) 格式存储。在这一章节中, 我们将深入探讨 launch.json 文件的结构、字段的含义和作用, 帮助你更好地理解和配置调试环境。

4.4.1. 文件结构和基本组成

launch.json 文件的整体结构通常由一个 JSON 对象组成, 该对象内包含一个名为 configurations 的字段, 用于配置不同的调试会话。configurations 是一个数组, 每个数组元素代表一个调试配置项。通常, 你可以在一个 launch.json 文件中定义多个调试配置, 以满足不同的调试需求。

以下是一个简单的 launch.json 文件示例, 其中包含两个不同的调试配置:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python: Current File",
      "type": "python",
      "request": "launch",
      "program": "${file}",
      "cwd": "${workspaceFolder}"
    },
    {
      "name": "Node.js: Launch Program",
      "type": "node",
      "request": "launch",
      "program": "${workspaceFolder}/app.js",
      "cwd": "${workspaceFolder}"
    }
  ]
}

常见字段及其含义

在 launch.json 配置文件中, 常见的字段和其含义如下:

  • “version”: 指定 launch.json 文件的格式版本。通常使用 “0.2.0”。
  • “configurations”: 一个包含多个调试配置的数组。每个配置是一个 JSON 对象, 包含以下字段:
  • “name”: 调试配置的名称, 用于在 VS Code 菜单中显示。
  • “type”: 指定调试器的类型, 如 “node”、“python” 等。
  • “request”: 指定调试请求类型, 通常为 “launch”(启动调试)或 “attach”(附加到已运行的进程)。
  • “program”: 指定要调试的程序或脚本的路径。
  • “cwd”: 指定工作目录, 即调试会话开始时的当前工作目录。

其他可选字段: 不同的调试器可能支持不同的字段, 用于配置更详细的调试行为。

当有多个调试配置时, 可以通过以下方式来选择和切换不同的配置进行调试:

  1. 使用调试面板 (Debug Panel): 打开 VS Code 的侧边栏, 并点击调试图标(一个虫子的图标)。这将打开调试面板, 可以在面板的顶部下拉菜单中选择要运行的调试配置。选择一个配置后, 点击绿色的"运行"按钮即可开始调试。
  2. 使用快速选择命令: 在编辑器中打开想要调试的文件, 然后使用快捷键 F5 启动调试。如果有多个配置, VS Code 将显示一个快速选择菜单, 可以在其中选择要使用的配置。使用上下箭头键选择配置, 然后按回车键开始调试。
  3. 在 launch.json 文件中设置默认配置: 在 launch.json 文件中, 可以通过设置 “default” 属性为 true 来指定一个默认的调试配置。当按下 F5 启动调试时, 会自动使用默认配置。

4.4.2. 配置参数详情

不同的调试器支持不同的配置参数。在 VS Code 中, 可以通过在 launch.json 文件中的 configurations 数组中添加具体的调试配置来设置这些参数。在配置调试会话时, 可以根据具体的调试目标、语言和框架, 选择适合的配置参数, 从而实现更精细的调试控制。

总而言之, launch.json 文件是 VS Code 中进行代码调试的重要配置文件, 它定义了不同调试会话的参数、行为和设置。通过了解 launch.json 文件的结构和基本原理, 可以更加灵活地配置调试环境, 提高调试效率, 快速定位问题, 并改善代码质量。在接下来的章节中, 我们将详细介绍如何创建和配置不同类型的调试配置, 以及如何根据项目需求进行定制化的调试设置。

4.5. 如何创建和配置 launch.json 文件

创建和配置 launch.json 文件是在 VS Code 中设置调试配置的关键步骤。下面是详细的步骤来创建和配置一个基本的 launch.json 文件:

  • 打开项目文件夹或项目文件。
  • 打开 VS Code, 点击左侧的调试图标(一个虫子的图标), 或者使用快捷键 Ctrl+Shift+D(Windows/Linux) 或 Cmd+Shift+D(Mac)。
  • 在调试面板的顶部, 将看到一个齿轮图标, 这是调试配置的设置图标。点击这个图标, 然后选择 “Add Configuration…”。
  • 在弹出的菜单中, 将看到不同的调试配置选项, 比如 “Node.js”、“Python” 等。选择与正在调试的编程语言相对应的配置选项。如果没有直接适用的选项, 可以选择 “Add Configuration…” 添加一个自定义配置。
  • 根据选择的配置选项, VS Code 将自动为生成一个基本的配置模板, 并在编辑器中打开 launch.json 文件。
  • 在 launch.json 文件中, 可以修改或添加各个字段来定制调试配置。字段的具体含义和用法可以根据选择的配置选项来进行设置。
  • 保存 launch.json 文件后, 可以在调试面板的顶部下拉菜单中选择刚刚配置的调试配置。
  • 点击绿色的"运行"按钮开始调试。如果选择的是默认配置, 还可以使用快捷键 F5 启动调试。

下面是一个简单的示例, 展示如何创建一个 Node.js 调试配置:

  • 打开 VS Code。
  • 打开 Node.js 项目文件夹。
  • 点击左侧的调试图标, 然后点击齿轮图标并选择 “Node.js”。
  • VS Code 将在编辑器中打开一个基本的 launch.json 文件, 类似于以下内容:
jsonCopy code{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${file}"
    }
  ]
}
  • 在这个基本配置的基础上, 可以修改字段如 “name”、“program” 等来定制调试配置。
  • 保存 launch.json 文件。
  • 在调试面板中选择刚刚配置的调试配置, 然后点击绿色的"运行"按钮启动调试。

这只是一个简单的示例, 实际上, 可以根据项目和调试需求来创建和配置不同类型的调试配置。根据选择的编程语言和调试目标, launch.json 文件的配置会有所不同。

4.6. 常见调试场景的 launch.json 配置

常见的调试场景以及相应的 launch.json 配置示例。以下是一些常用编程语言和场景的示例:

4.6.1. Node.js 调试

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Node.js Launch",
      "program": "${file}",
      "cwd": "${workspaceFolder}",
      "runtimeExecutable": "node"
    }
  ]
}

4.6.2. Python 调试

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python: Current File",
      "type": "python",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal"
    },
    "env": {
    	"PYTHONPATH": "",
    }
		"args":[]
    
  ]
}

4.6.3. Java 调试

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "java",
      "name": "Java Debug",
      "request": "launch",
      "cwd": "${workspaceFolder}",
      "console": "internalConsole",
      "stopOnEntry": false,
      "mainClass": "${file}"
    }
  ]
}

4.6.4. C# 调试

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": ".NET Core Launch (console)",
      "type": "coreclr",
      "request": "launch",
      "preLaunchTask": "build",
      "program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/app.dll",
      "args": [],
      "cwd": "${workspaceFolder}",
      "stopAtEntry": false,
      "serverReadyAction": {
        "action": "openExternally",
        "pattern": "\\bNow listening on:\\s+(https?://\\S+)"
      },
      "env": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "sourceFileMap": {
        "/Views": "${workspaceFolder}/Views"
      }
    }
  ]
}

4.6.5. Web 开发调试

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "chrome",
      "request": "launch",
      "name": "Launch Chrome",
      "url": "http://localhost:3000",
      "webRoot": "${workspaceFolder}/src"
    }
  ]
}

4.6.6. 客户端-服务器模式调试

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch Client/Server",
      "type": "node",
      "request": "launch",
      "cwd": "${workspaceFolder}/server",
      "program": "${workspaceFolder}/server/app.js",
      "env": {
        "NODE_ENV": "development"
      },
      "outFiles": [
        "${workspaceFolder}/client/dist/**/*.js"
      ],
      "sourceMaps": true,
      "restart": true,
      "console": "integratedTerminal"
    }
  ]
}

以上示例展示了常见的调试场景的 launch.json 配置, 包括 Node.js、Python、Java、C#、Web 开发等。根据实际项目和编程语言, 可以选择适用的配置, 并根据需要进行自定义调整。配置中的各个字段会根据不同的场景有所不同, 可以根据文档和实际需求进行配置。

4.7. 调试器和 launch.json 的关系

调试器与 launch.json 文件的关系:

调试器是一种工具, 用于执行和监视正在运行的程序, 并在运行时提供调试信息。它们与特定编程语言和环境相关, 可以捕获变量值、堆栈跟踪等信息, 帮助开发人员诊断和修复代码中的问题。调试器可以是 VS Code 内置的, 也可以是第三方扩展提供的。

launch.json 文件是配置文件, 用于定义如何启动和配置调试器, 以及调试器应该如何运行代码。每个调试器配置都对应于一种特定的调试场景, 如 Node.js 调试、Python 调试等。在 launch.json 中, 可以指定启动程序的路径、命令行参数、工作目录等信息, 还可以设置断点、观察表达式等调试选项。

交互过程:

  1. 配置 launch.json: 首先, 需要在项目根目录下创建或编辑 launch.json 文件。在该文件中, 定义了一个或多个调试配置。每个配置都包含调试器的相关设置, 如 type(调试器类型)、request(请求类型, 例如 “launch” 用于启动调试)以及其他调试器特定的设置。
  2. 选择配置并启动调试: 在 VS Code 的左侧活动栏中, 点击调试图标, 然后在顶部工具栏的下拉菜单中选择想要的调试配置(在 launch.json 中定义的配置)。点击启动按钮, VS Code 将使用选择的配置启动调试器。
  3. 调试器启动: VS Code 将读取选择的配置并与相应的调试器交互。它会启动一个调试会话, 根据配置设置启动程序、断点等。此时, 调试器会开始监视代码的执行, 并在必要时暂停执行以等待的操作。
  4. 交互式调试: 当代码执行到断点处或遇到其他调试事件时, 调试器将暂停执行。可以查看变量的值、堆栈跟踪等信息。此时, 可以逐步执行代码, 逐行查看代码执行过程中的变化。还可以在断点处添加或删除断点, 以及使用调试器提供的其他功能。
  5. 继续执行或停止调试: 在调试会话中, 可以选择继续执行代码, 直到下一个断点或程序结束。如果问题已解决, 可以选择停止调试, 结束调试会话。

总之, launch.json 文件是将调试器配置与特定的调试场景关联起来的核心文件。调试器根据 launch.json 的配置启动和运行代码, 提供交互式的调试体验, 帮助您有效地诊断和修复代码问题。在实际使用中, 可以根据不同的项目和需求创建不同的调试配置, 以满足不同的调试需求。

4.8. 调试环境和运行配置

根据不同的调试环境设置不同的运行配置, 以满足各种不同的调试需求。在开发过程中, 可能需要在不同的情况下进行调试, 例如开发、测试和生产环境。使用不同的运行配置, 可以适应不同的场景, 并优化调试体验。

调试环境和运行配置的关系:

在 launch.json 文件中, 可以创建多个调试配置, 每个配置针对不同的调试环境或需求。调试环境可能包括开发环境、测试环境、生产环境等。通过设置不同的运行配置, 可以轻松地切换不同的调试场景, 以便更好地调试代码。

为不同的环境创建运行配置:

在 launch.json 文件中, 可以创建多个配置对象, 每个对象对应一个调试场景。可以为每个配置指定不同的名称、类型、程序路径、命令行参数等。例如, 如果希望在开发环境下调试, 可以创建一个名为 “Debug Dev” 的配置; 如果在生产环境下调试, 可以创建一个名为 “Debug Prod” 的配置。

切换运行配置:

  1. 打开 VS Code, 点击左侧的调试图标以打开调试面板。
  2. 在调试面板的顶部, 可以看到一个下拉菜单, 用于选择要运行的调试配置。在下拉菜单中, 将看到在 launch.json 中定义的所有配置名称。
  3. 选择想要的调试配置, 然后点击启动按钮开始调试。

动态设置运行配置:

另一种灵活的方法是通过变量和预定义的宏来动态设置运行配置。例如, 可以在 launch.json 中使用 ${workspaceFolder} 来代表工作区的根目录, 从而实现根据工作区路径的不同, 自动适配不同的配置。

自动选择运行配置:

VS Code 还提供了自动选择运行配置的功能。如果在编辑某个文件时点击了调试按钮, VS Code 将会自动检测正在编辑的文件的类型, 并尝试匹配合适的调试配置。这使得你无需手动选择配置, 更加便捷地开始调试。

总之, 通过为不同的调试环境和需求创建不同的运行配置, 可以更好地适应各种开发场景, 提高调试的灵活性和效率。通过简单的切换和动态设置, 可以在不同的环境下轻松进行代码调试。

4.9. 常用 launch.json 配置参数详解

在使用 launch.json 配置调试环境时, 会涉及到多个参数, 用于定义调试器的行为和目标执行环境。以下是一些常用的配置参数:

  • “type”: 指定调试器的类型, 例如 “node” 表示 Node.js 调试器, “python” 表示 Python 调试器, “java” 表示 Java 调试器等。
  • “request”: 指定调试的请求类型, 可以是 “launch”(启动一个新的进程)或 “attach”(附加到已有的进程)。
  • “name”: 为配置提供一个友好的名称, 方便识别不同的调试配置。
  • “program”: 用于指定程序的入口文件路径, 可以是绝对路径或相对于工作目录的路径。
  • “args”: 传递给程序的命令行参数, 以数组形式提供。
  • “cwd”: 指定程序的工作目录, 可以是绝对路径或相对于工作目录的路径。
  • “env”: 设置程序运行时的环境变量, 以对象形式提供。
  • “stopOnEntry”: 设置为 true 时, 在启动后会在入口处停止, 等待调试器连接。
  • “preLaunchTask”: 指定在启动调试前运行的任务, 通常是一个编译任务。
  • “postDebugTask”: 指定在调试结束后运行的任务, 比如清理任务。
  • “outFiles”: 设置输出文件的路径, 用于映射源代码和编译后的文件。
  • “sourceMaps”: 控制是否启用源代码映射, 可以是 “inline”、“both” 或 “false”。
  • “sourceMapPathOverrides”: 用于根据源代码映射调整文件路径。
  • “externalConsole”: 设置为 true 时, 将在外部控制台中运行程序。
  • “internalConsoleOptions”: 控制内部控制台的显示方式, 可以是 “neverOpen”、“openOnSessionStart” 或 “openOnFirstSessionStart”。
  • “showAsyncStacks”: 设置为 true 时, 在堆栈跟踪中显示异步调用的信息。
  • “stopOnError”: 设置为 true 时, 当发生错误时暂停调试。
  • “smartStep”: 设置为 true 时, 跳过无需调试的代码。
  • “skipFiles”: 指定不需要调试的文件或文件夹。
  • “justMyCode”: 设置为 true 时, 只调试自己的代码。

通过对这些常用配置参数的理解, 可以根据不同的调试场景和需求, 灵活地配置 launch.json 文件, 从而更高效地进行代码调试。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云满笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值