2012-02-10 31 views
0

任何人都可以指導我如何打造的C代碼調用樹如果任何人可以建議我任何開源工具,我用func_tree但它並不顯示在宏...在宏函數調用和功能???? ?如何轉儲文件中c代碼的函數調用樹?

+0

你爲什麼標籤這個C++,如果它是關於C? – 2012-02-10 15:48:29

+0

構建調用樹是什麼意思? – AJG85 2012-02-10 15:54:27

+0

宏不是函數。宏是榮耀的複製粘貼。它們永遠不會出現在任何類型的調試器或堆棧跟蹤中。 – 2012-02-10 15:54:37

回答

0

您編譯代碼只是前,一個C預處理器擴展了所有的宏。這意味着甚至編譯器也不會看到宏定義。對你而言不幸的是,這意味着在函數調用跟蹤中不可能包含宏。

取決於你如何知道你的運行環境,有時你可以反算在堆棧跟蹤幀從堆棧的當前位置。不幸的是,確切的細節只適用於一種環境通常是一種伎倆。您需要重新執行每個環境的堆棧語義發現。 Here is project that performs such a technique,但不可能知道它是否對你非常有用。

注意,這樣的技術將很可能也不會顯示在襯裏任何編譯器,作爲函數調用被重寫時,編譯的等效功能碼放入調用塊不存在。

如果你不能找到與谷歌類似的項目對於特定的環境,賠率是你必須自己寫一個。如果超出了你的範圍,你需要調查是否值得了解你的環境的低級細節,或者是否更好地執行更強大的日誌記錄。

相關問題