0
我正在使用GDB来理解C++程序。我把休息在运行中间果然是这样的:获取使用GDB调用的函数
休息的main.cpp:500
,我想看看它的功能已经被之前调用。我尝试了“回溯”,但它只显示了有关main的信息,因为之前对以前函数的调用已经完成。
我的问题是,如何获得(使用GDB或其他方法)有关哪些函数在此点之前被调用的信息,即使该调用已返回。
感谢
我正在使用GDB来理解C++程序。我把休息在运行中间果然是这样的:获取使用GDB调用的函数
休息的main.cpp:500
,我想看看它的功能已经被之前调用。我尝试了“回溯”,但它只显示了有关main的信息,因为之前对以前函数的调用已经完成。
我的问题是,如何获得(使用GDB或其他方法)有关哪些函数在此点之前被调用的信息,即使该调用已返回。
感谢
一个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代码查找所有。
你可能想要一个分析器 - 看看gprof。 – 2010-05-04 09:06:05