在 CentOS 上调试 C++ 程序,通常流程是:编译带调试信息 → 使用 gdb / lldb / IDE 调试。下面按常见场景一步步说明。
sudo yum install -y gcc gcc-c++ gdb make
CentOS 7/8 默认仓库即可,若使用 CentOS Stream 也可用
dnf。
检查版本:
g++ --version
gdb --version
// main.cpp
#include <iostream>
int add(int a, int b) {
int c = a + b;
return c;
}
int main() {
int x = 10;
int y = 20;
int z = add(x, y);
std::cout << "z = " << z << std::endl;
return 0;
}
g++ -g -O0 -o main main.cpp
参数说明:
-g:生成调试信息(必须)-O0:关闭优化(否则变量可能被优化掉)-o main:输出可执行文件gdb ./main
进入 GDB 后常见操作:
| 命令 | 说明 |
|---|---|
run / r |
运行程序 |
break main |
在 main 函数打断点 |
break 文件名:行号 |
指定位置断点 |
next / n |
单步执行(不进入函数) |
step / s |
单步执行(进入函数) |
print 变量 / p x |
查看变量 |
backtrace / bt |
查看调用栈 |
continue / c |
继续执行 |
quit |
退出 |
(gdb) break main
(gdb) run
(gdb) next
(gdb) print x
(gdb) step
(gdb) backtrace
ulimit -c unlimited
./main
产生类似:
core.12345
gdb ./main core.12345
查看崩溃位置:
bt
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
sudo yum install code
launch.json{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/main",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"externalConsole": false,
"MIMode": "gdb"
}
]
}
然后按 F5 调试。
-g-O2 优化✅ 正确:
g++ -g -O0 main.cpp
说明没有调试信息,重新编译。
sudo yum install gcc gcc-c++ gdb
g++ -g -O0 -o main main.cpp
gdb ./main
如果你愿意,可以告诉我:
我可以给你更针对性的调试方案。