我正在尝试运行测试程序,以查看gdb(backtrace)如何显示调用堆栈。我有以下程序
#include#include void fun2() { assert(0); } void fun1() { fun2(); } int main() { fun1(); return 0; }
我执行以下操作:
g++ -g dump.cpp -o out ./out out: dump.cpp:16: void fun2(): Assertion `0' failed. Abort (core dumped) gdb out core.28149 (gdb) bt No stack. //Why does it show no stack here
我期望它将呼叫堆栈显示为:
fun2 fun1 main
编辑:我编辑了代码并编译为 g++ -g -O0 dump.cpp -o out
但我仍然没有筹码
void fun2(int num) { int h=23; if(h*num>100) { assert(0); } else { cout<<"Hello"; } } void fun1(int num) { { fun2(num); } } int main() { int num; cin>>num; fun1(num); return 0; }
这次的汇编代码向我展示了fun1,fun2(assert),main的单独代码。但是我仍然看到gdb中没有堆栈