2009-11-13 43 views
5

我想解析項目中的當前C++文件並列出其中的所有方法/函數,然後生成函數調用和調用者樹。 F.g.你可以參考doxygen如何生成調用樹。C++:生成函數調用樹

我檢查了gccxml,但沒有列出從另一個函數調用的函數。

請給我推薦一些我可以使用的輕量級工具(開源)。

謝謝!

+4

你想解決的問題很難。 C++是一種非常難以解析的語言。 – jmucchiello 2009-11-13 06:36:16

回答

6

靜態調用樹不一定是運行時調用樹。回調函數和虛擬函數混淆水。所以靜態分析只能給你一部分答案。

我一直能夠獲得可靠的調用樹的唯一方法是在編譯的可執行文件上運行gprof。輸出可以按到一個非常準確的調用樹中。

4

gccxml目前基本上忽略了函數體(包括對其他函數的調用)。目前可用的C++解析選項很好的概述是here - 不一定是好消息的載體,但推薦閱讀。

+0

他的分析非常正確,幾乎讓我哭泣。 – 2009-11-13 14:44:20

2

你提到Doxygen。爲什麼不使用它?

0

我可能誤解了,但visual studio有類似的東西。 右鍵單擊一個功能並選擇呼叫瀏覽器。

0

對於依賴於異步事件接收的應用程序,無法提供完整的調用樹分析。這是我們測試的方式。即使在最簡單的情況下,應用程序是完全確定性的,這可能是一個相對艱鉅的任務,我認爲會提供邊際價值。那麼你如何分析結果呢?爲了什麼效果?