“Linux 下 C++ 程序配置后崩溃”原因非常多,下面按最常见 → 较少见给你一个系统排查清单,你可以对照看看属于哪一种。
MyClass* p = nullptr;
p->func(); // 崩溃
排查:
gdb ./your_program
run
bt
看崩溃栈是否在 0x0 或某行解引用。
std::vector<int> v(3);
v[10] = 1; // UB
✅ 建议:
v.at(10); // 会抛异常
比如:
int port = cfg["port"]; // 如果不存在 → UB
✅ 正确做法:
if (!cfg.count("port")) {
throw std::runtime_error("missing port");
}
./app: symbol lookup error
./app: version `GLIBCXX_3.4.29' not found
原因:
✅ 检查:
ldd ./your_program
strings /lib64/libstdc++.so.6 | grep GLIBCXX
例如:
// a.cpp 用 -O2
// b.cpp 用 -O0
有时会直接崩。
void f() { int a[1000000]; f(); }
✅ 查看:
ulimit -s
dmesg | grep -i killed
gdb ./app
run
bt
g++ -fsanitize=address -g main.cpp
./a.out
valgrind ./app
你可以贴:
我可以直接帮你指出具体哪一行会崩。