0
是否可以在運行時生成函數調用樹?我想了解該程序正在調用什麼。在運行時跟蹤非託管函數調用?
這基本上與在特定位置打破,遍歷每個函數並記錄函數名稱是什麼相同。我沒有性能限制。
我正在使用Visual Studio,但不必。
//編輯
爲了澄清,如果我有功能A
調用函數B
和功能C
和功能B
調用函數D
,我想下面的示例輸出:
(0.01s) -> Function A
(0.02s) -> Function B
(0.02s) -> Function D
(0.03s) -> Function C
我不想要靜態調用圖。我希望在運行時爲每個函數調用在堆棧上發生什麼。
你的問題有點含糊:你想生成一個調用圖嗎? (除了通過函數指針調用外,這通常可以靜態完成,即不在運行時)。你想知道哪些功能被稱爲最多或哪些花費最多時間? (如果是這樣,你需要一個分析器,否則你需要手動測試你的代碼)。你想在程序運行時以編程方式破壞程序並獲得堆棧跟蹤嗎?你希望你的程序能夠在執行過程中的某個地方查詢,看看調用堆棧是什麼? – 2010-09-09 22:33:27
Doxygen可以生成調用者和被調用者圖形,但不能在運行時生成。 – 2010-09-09 22:41:17
我想「你想在程序運行時破壞你的程序並獲得一個堆棧跟蹤,」因此我的問題的「運行時」部分。 – 2010-09-10 20:40:06