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