我正在使用GDB来理解C ++程序。我在跑步过程中休息了一下,结果就像是:
打破main.cpp:500
我希望看到以前调用过哪些函数。我尝试了“回溯”但它只显示了关于main的信息,因为先前对以前函数的调用已经完成。
我的问题是如何获得(使用GDB或其他方法)关于在此之前调用了哪些函数的信息,即使已经返回了调用。
由于
答案 0 :(得分:1)
gdb脚本可能是您的问题的解决方案。
创建一个脚本,将断点放在每个可能被调用的函数上。 在休息时用'bt'打印堆栈并继续执行。
你应该给main.cpp另外设一个断点:500来退出调试。
b 'main.cpp::500' commands 1 detach quit end break 'A::f1()' break 'A::f2()' while true continue bt end
您可以像这样启动脚本:
gdb --command ./gdbscript.gdb fpmanager
如果你有太多可能被调用的函数,你可以grep代码来查找所有函数。