Linux GDB 用法-ChatGPT 4o 生成
在 Linux 上使用 Visual Studio Code (VSCode) 调试 C++ 代码时,可以借助 gdb
(GNU Debugger)来进行断点调试。以下是详细步骤:
1. 安装环境和工具
安装 g++ 和 gdb
确保你的系统已经安装了编译器和调试工具:
sudo apt update
sudo apt install g++ gdb
安装 VSCode 和 C++ 扩展
- 打开 VSCode。
- 在扩展市场中搜索并安装 C++ 扩展 (C/C++ by Microsoft)。
2. 创建 C++ 项目和配置文件
创建工作目录和代码文件
在你的工作目录下创建一个简单的 C++ 文件,例如 main.cpp
:
#include <iostream>
using namespace std;
int main() {
int a = 5;
int b = 10;
int sum = a + b;
cout << "Sum: " << sum << endl;
return 0;
}
编译代码
先使用 g++ 编译代码,生成可调试的可执行文件(需要 -g
参数):
g++ -g main.cpp -o main
3. 配置 VSCode 的调试环境
配置 launch.json
- 打开 运行和调试 (
Ctrl+Shift+D
)。 - 点击 创建 launch.json 文件,选择 C++ (GDB/LLDB)。
- 修改生成的
launch.json
文件,内容如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/main",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build",
"miDebuggerPath": "/usr/bin/gdb",
"internalConsoleOptions": "openOnSessionStart"
}
]
}
配置 tasks.json
(可选)
确保在调试前自动编译代码:
- 在
.vscode
目录下创建或编辑tasks.json
文件:
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": [
"-g",
"main.cpp",
"-o",
"main"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": ["$gcc"]
}
]
}
4. 设置断点并运行调试
- 打开
main.cpp
文件,在你想要调试的行(如int sum = a + b;
)左侧点击,添加断点。 - 点击 运行和调试 或按
F5
以启动调试。 - 调试窗口将显示当前状态,你可以:
- 使用 F10 逐步执行(Step Over)。
- 使用 F11 进入函数(Step Into)。
- 使用 Shift+F5 停止调试。
5. 常见调试操作
- 查看变量:悬停在变量名上查看其值。
- 监视变量:右键变量名并选择“添加到监视”。
- 调用堆栈:查看当前调用的函数栈帧。
- 断点管理:在调试面板中查看和管理断点。
6. 常见问题及解决
-
“无法启动 gdb”:确保
gdb
已安装并且路径正确:which gdb
-
权限问题:如果遇到权限问题,请尝试使用
sudo
启动 VSCode。
通过以上步骤,你就可以在 Linux 上通过 VSCode 使用 gdb 对 C++ 代码进行调试了。如果还有其他问题,请告诉我!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现