在 Debian 上配置 C++ 调试器的完整步骤
一 安装必要工具
- 更新索引并安装编译器与调试器:sudo apt update && sudo apt install -y build-essential gdb。这将一次性安装 gcc/g++、make 以及 GDB。安装完成后可用 gcc --version、g++ --version、gdb --version 验证版本。
二 命令行使用 GDB 调试
- 编译时务必加入调试信息:g++ -g -o hello hello.cpp(C 程序用 gcc -g)。优化级别建议先用 -O0(默认),避免 -O2/-O3 改变执行顺序导致调试困难。
- 启动与基本操作:
- 启动:gdb ./hello
- 断点:break main 或 break hello.cpp:10
- 运行:run(可带参数)
- 单步:next(不进函数)/ step(进入函数)
- 继续:continue
- 打印:print var
- 调用栈:backtrace(bt)
- 退出:quit
- 常用进阶:条件断点 break 127 if cnt==10;监视点 watch var;附加到进程 gdb -p ;查看寄存器 info registers。
三 在 VS Code 中配置一键编译与调试
- 安装 VS Code 与扩展:sudo apt update && sudo apt install -y software-properties-common apt-transport-https curl;curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -;sudo add-apt-repository “deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main”;sudo apt update && sudo apt install -y code。在 VS Code 扩展市场安装 C/C++(Microsoft)。
- 生成并配置构建任务 tasks.json(按 F1 → Tasks: Configure Task → Create tasks.json from template → Others,或直接新建 .vscode/tasks.json):
{
"version": "2.0.0",
"tasks": [
{
"label": "g++ build active file",
"type": "shell",
"command": "g++",
"args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"],
"options": { "cwd": "${workspaceFolder}" },
"problemMatcher": ["$gcc"],
"group": { "kind": "build", "isDefault": true }
}
]
}
- 生成并配置调试启动 launch.json(按 F5 → create a launch.json file → 选择 C++ (GDB/LLDB)):
{
"version": "0.2.0",
"configurations": [
{
"name": "g++ build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"setupCommands": [
{ "description": "Enable pretty-printing", "text": "-enable-pretty-printing", "ignoreFailures": true }
],
"preLaunchTask": "g++ build active file"
}
]
}
- 按 F5 即可构建并启动调试;若提示找不到调试器或源文件,确认 gdb 已安装且路径为 /usr/bin/gdb,必要时安装开发库:sudo apt install -y libc6-dev libstdc++6-dev。
四 常见问题与排查
- 断点无法命中或变量不可见:编译未加 -g 或使用了 -O2/-O3;请改为 -g -O0 重新编译。
- 提示缺少调试信息或找不到头文件:安装 libc6-dev、libstdc++6-dev 等开发包。
- 无法启动调试或找不到 gdb:确认已安装 gdb(sudo apt install -y gdb),并在 launch.json 中正确设置 miDebuggerPath: “/usr/bin/gdb”。
- 需要调试已运行进程:使用 gdb -p 或 gdb attach 附加;退出前可 detach 再 quit。