Vscode中使用C++代码进行debug

前置准备

先配置好C++的运行环境,比如安装C++插件,先把C++代码跑起来,所以你需要先编译好源码,才能进行后续的debug。

关键配置

我选用的方式是配置 launch.json 文件进行debug,当你已经成功的编译并运行了源代码,这时候就可以配置 launch.json 文件了。具体为:

  1. 点击debug 模块,再点击创建 launch.json ,然后点击弹出的 debugger,选择推荐的第一个GDB debugger
    在这里插入图片描述
    在这里插入图片描述

  2. 选择gdb launch 模式
    在这里插入图片描述

  3. 然后需要修改的就一个,将 program 参数的值设置为你已经编译好的可执行文件的地址,比如我的工作目录是 “D:\Desktop\C-Plus-Plus-master”,我的可执行文件的目录是 “D:\Desktop\C-Plus-Plus-master\backtracking\output\generate_parentheses.exe”,那就按照我图中的方式来改。需要注意路径的斜杠需要遵循图中的书写方式,还有就是miDebuggerPath参数,如果不知道 gdb 的路径,直接将这个注释掉就行了。
    在这里插入图片描述

  4. 完整以上配置,只需要在源码里打上断点,直接启动debug就行了。
    在这里插入图片描述

  5. 这时你就可以查看程序执行过程中的一些中间变量的值,也可以逐步的运行代码了。
    在这里插入图片描述


再次更新~

上面写的方法虽然简单,但是有个缺陷,就是每次修改源代码就需要重新编译,对于需要不断修改源代码的调试就很不友好,这两天学习了使用 tasks.json 和 launch.json 自动化这些步骤!

下面将一步步教你如何实现:

  • 修改代码后,一键调试
  • 自动在调试前先编译(即 preLaunchTask)
  • 报错时 VS Code 会自动跳转源码位置

项目结构假设

假设你的项目结构如下:

my-project/
├── CMakeLists.txt
├── src/
│ └── main.cpp
└── build/

你平时是这样编译的:

cd build
cmake ..
make

编写 task.json 和 launch.json
你需要:

  1. 在 .vscode/ 目录下新建或编辑 tasks.json,加入如下内容:
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "cmake",
      "type": "shell",
      "command": "cmake",
      "args": [".."],
      "options": {
        "cwd": "${workspaceFolder}/build"
      }
    },
    {
      "label": "make",
      "type": "shell",
      "command": "make",
      "args": [],
      "options": {
        "cwd": "${workspaceFolder}/build"
      },
      "problemMatcher": ["$gcc"]
    },
    {
      "label": "build-cpp",
      "dependsOn": ["cmake", "make"],
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}

字段解释:

字段作用
label任务的名字,可被其他任务或调试器引用
type: "shell"表示这是一个 shell 命令
command执行的命令,比如 cmakemake
argscommand 传递的参数,例如 cmake .. 就是 command: "cmake" + args: [".."]
options.cwd指定在哪个目录执行命令,避免手动 cd
problemMatcher让 VS Code 识别错误信息并高亮
dependsOn表示这个任务依赖于多个子任务,会按顺序执行

最后我们创建了一个名为 build-cpp 的组合任务,它会自动先执行 cmake 再执行 make。

  1. 在 .vscode/ 目录下新建或编辑 launch.json,加入如下内容:
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "GDB Debug",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/build/main",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "preLaunchTask": "build-cpp",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

字段解释:

字段作用
name调试配置名称
type: cppdbg表示 C++ 调试器
request: launch启动调试模式(非 attach)
program可执行文件路径(编译后生成的)
cwd工作目录
preLaunchTask在调试前执行哪个任务,这里就是我们上面定义的 "build-cpp"
MIMode指定调试器类型,比如 gdb
setupCommands调试前的一些设置,比如启用 gdb 美化输出

加上 preLaunchTask 后,每次按 F5 调试前会自动编译,这样就不用手动编译了!

关键点总结

配置项功能
launch.json启动调试并自动构建
tasks.json编写自动构建任务
preLaunchTask将构建任务接入调试流程
problemMatcher自动解析错误并定位源代码
  1. 在launch.json中需要注意的就是 program 和 preLaunchTask 两个参数,后者就是 task.json 中的 label 参数,两者需对应才能关联起来。
  2. 在 task.json 中就是 dependsOn 和 label 两个参数,其中 dependsOn 表示这个任务依赖于多个子任务,会按顺序执行,每个子任务又会在这个 task 中定义,每个子任务里的参数可以这么理解:
    type → options.cwd → command + args → problemMatcher → group 等其他元信息

这样每次修改源码后,如果进行 debug 都会先执行 preLaunchTask,而 preLaunchTask 就是 task 中设置的任务,他会执行 [“cmake”, “make”]两个子任务,这样就自动完成了编译。

### VSCode中C语言调试教程 在VSCode中配置C语言的调试环境需要完成几个关键步骤,包括安装必要的扩展、编译代码以及配置`launch.json`文件。以下是详细的说明: #### 1. 安装必要的工具和扩展 首先,确保系统已安装以下工具: - **GCC**:用于编译C语言程序[^2]。 - **GDB**:GNU调试器,用于调试C语言程序[^3]。 此外,在VSCode中需要安装以下扩展: - **C/C++**:由Microsoft提供,支持C/C++的智能感知、调试等功能[^4]。 #### 2. 编写并编译C语言程序 创建一个简单的C语言程序,例如`hello.c`: ```c #include <stdio.h> int main() { printf("Hello, World!\n"); return 0; } ``` 使用GCC编译该程序,并生成可执行文件: ```bash gcc -g hello.c -o hello ``` 其中,`-g`选项用于生成调试信息,供GDB使用[^5]。 #### 3. 配置`launch.json`文件 在VSCode中,按下`F5`或点击“运行和调试”按钮以启动调试模式。如果没有现成的`launch.json`文件,VSCode会提示你选择调试环境。选择“C++ (GDB/LLDB)”后,VSCode将自动生成一个默认的`launch.json`文件。 编辑`.vscode/launch.json`文件,确保包含以下内容: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/hello", // 可执行文件路径 "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", // GDB路径 "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "build" } ] } ``` - `program`参数应设置为生成的可执行文件路径[^6]。 - `miDebuggerPath`参数应设置为GDB的安装路径[^7]。 #### 4. 添加构建任务 为了简化编译过程,可以配置一个构建任务。在VSCode中,按下`Ctrl+Shift+P`,输入`Tasks: Configure Task`,然后选择`Create tasks.json file from template`并选择`Others`。 编辑`.vscode/tasks.json`文件,添加以下内容: ```json { "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "gcc", "args": [ "-g", "hello.c", "-o", "hello" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"] } ] } ``` #### 5. 启动调试 保存所有文件后,按下`F5`启动调试。此时,VSCode将自动编译代码并启动调试器。可以在代码中设置断点,观察变量值以及逐步执行程序[^8]。 ```python print("调试环境配置完成!") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值