配置 Linux 下的 C++ 调试器通常围绕 GDB(或 LLDB) 展开,同时配合 构建系统、IDE / 编辑器 使用。下面按最常见、最实用的方式一步一步说明。
# Debian / Ubuntu
sudo apt update
sudo apt install gdb
# CentOS / RHEL / Rocky
sudo yum install gdb
# 或
sudo dnf install gdb
# Arch
sudo pacman -S gdb
验证:
gdb --version
sudo apt install lldb
# 或
sudo dnf install lldb
❗ 没有 -g,调试器几乎没用
g++ -g -O0 -std=c++17 main.cpp -o app
推荐参数说明:
| 参数 | 作用 |
|---|---|
-g |
生成调试信息 |
-O0 |
关闭优化(方便调试) |
-std=c++17 |
C++ 标准 |
-Wall -Wextra |
编译警告 |
⚠️ 不要同时用 -O2/-O3 调试
gdb ./app
或:
gdb --args ./app arg1 arg2
| 命令 | 说明 |
|---|---|
run / r |
运行程序 |
break main |
在 main 设断点 |
break file.cpp:20 |
指定文件行号 |
next / n |
下一行(不进入函数) |
step / s |
进入函数 |
print x |
打印变量 |
backtrace / bt |
查看调用栈 |
continue / c |
继续执行 |
quit |
退出 |
示例:
(gdb) break main
(gdb) run
(gdb) next
(gdb) print i
ulimit -c unlimited
gdb ./app core
快速定位:
bt
g++ -g main.cpp -o app
launch.json{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/app",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing",
"text": "-enable-pretty-printing"
}
]
}
]
}
按 F5 即可调试 ✅
set(CMAKE_BUILD_TYPE Debug)
或:
cmake -DCMAKE_BUILD_TYPE=Debug ..
推荐:
add_compile_options(-g -O0)
<optimized out>✅ 原因:开了优化
✅ 解决:
-g -O0
✅ 检查是否:
-g✅ 启用 pretty printer(VS Code 默认开启)
| 场景 | 推荐 |
|---|---|
| 新手 | GDB + VS Code |
| 大型项目 | CMake + GDB |
| Clang 工具链 | LLDB |
| 快速定位崩溃 | core dump + GDB |
如果你愿意,可以告诉我:
我可以给你一份完全针对你环境的配置示例。