Linux vscode调试c++程序
时间: 2023-04-04 10:03:27 浏览: 144
可以使用VS Code的C/C++扩展程序来调试C程序。首先,需要在VS Code中安装C/C++扩展程序,然后在调试配置中添加C程序的启动配置。接下来,可以使用VS Code的调试功能来设置断点、单步执行、查看变量等。具体的步骤可以参考VS Code的官方文档。
相关问题
vscode调试c++代码
### 配置和使用 VS Code 中的 C++ 调试器
#### 创建必要的 JSON 文件
为了能够在 Visual Studio Code (VS Code) 中调试 C++ 代码,需要创建 `tasks.json` 和 `launch.json` 这两个重要的配置文件。前者负责定义编译任务,后者则用来指定调试选项。
对于 Windows 用户而言,在安装 MinGW 后可以利用其提供的 GCC 编译器来完成项目的构建工作[^1];而对于 Linux 系统下的开发者,则可以直接借助系统自带或通过包管理器获取的相关工具链来进行操作[^2]。
#### tasks.json 的编写
此文件位于 `.vscode/` 目录下,主要用于描述如何调用外部命令(比如 g++)对源码实施编译过程:
```json
{
"version": "2.0.0",
"tasks": [
{
"label": "build hello world",
"type": "shell",
"command": "g++",
"args": [
"-g", // 添加调试信息
"${workspaceFolder}/main.cpp", // 输入文件路径
"-o", // 输出目标可执行文件名前缀
"${fileDirname}/${fileBasenameNoExtension}"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": ["$gcc"],
"detail": "Generated task."
}
]
}
```
上述脚本会尝试找到当前打开的工作区内的 main.cpp 文件并将其编译成同目录下的名为 “main.exe” 或者仅含扩展名不同的二进制文件,具体取决于操作系统平台的不同。
#### launch.json 的编写
同样放置于 .vscode 文件夹内,该文档决定了当按下 F5 键启动调试模式时应该怎样加载程序以及附加其他必要参数给 GDB 调试引擎:
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/main.exe", // 可执行文件的位置
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb", // 对应Linux系统的GDB路径
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build hello world", // 执行之前先运行的任务名称
"internalConsoleOptions": "openOnSessionStart"
}
]
}
```
这段配置指定了要使用的调试协议(`cppdbg`)、待调试的应用程序入口点(`program`)以及其他一些辅助性的设定项,例如是否开启外部控制台窗口等特性。
一旦完成了以上两步设置之后,只需按一次F5键即可开始愉快地单步跟踪C++代码逻辑了!
vscode调试C++文件
### 配置和使用 VSCode 进行 C++ 程序调试
#### 安装必要的工具和扩展
为了能够在 VSCode 中成功编译并调试 C++ 文件,需确保已安装 `gcc` 和 `g++` 编译器以及 Visual Studio Code 的 C/C++ 扩展包[^1]。
#### 创建项目结构
建议在一个新的文件夹内开展工作,在该目录下放置所有的源代码文件。例如可以创建名为 `project_folder` 的文件夹,并在此文件夹中编写 `.cpp` 文件如 `test.cpp`[^2]。
#### 设置 launch.json 文件
要启动调试会话,需要配置一个 JSON 文件——launch.json 来指定调试选项。可以通过点击左侧活动栏中的调试图标,再选择齿轮图标来自动生成此文件模板;之后根据实际情况调整参数设置:
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/a.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build"
}
]
}
```
上述配置适用于 Linux 平台下的 GDB 调试环境[^3]。
#### 构建任务定义
还需设定构建任务以便于一键编译程序。这通常是在 tasks.json 文件里完成的,同样位于 .vscode 子目录之下:
```json
{
"tasks": [
{
"label": "build",
"command": "/usr/bin/g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.out"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": ["$gcc"],
"detail": "Generated task from Build Panel"
}
]
}
```
这段脚本指定了 g++ 作为默认编译命令,并加入了 `-g` 参数以包含调试信息。
#### 开始调试过程
当一切准备就绪后,只需按下 F5 键即可触发预设好的调试流程。此时如果遇到任何错误提示,则应按照报错信息逐一排查直至解决问题为止。
阅读全文
相关推荐














