2011-05-17 31 views

回答

3

鑑於宏由預處理器處理,即使實際的編譯器也不知道它們。唯一的選擇是對鱈魚進行反向工程,找到你知道使用宏的地方並從那裏提取數值。

編輯:我剛剛檢查DWARF規範,標準定義.debug_macinfo部分尤其是儲存關於宏的調試信息,這部分包含DW_MACINFO_define記錄每個定義的宏。

因此,如果您有庫的調試版本,則可以嘗試使用dwarfdump -mreadelf --debug-dump=macro來提取此信息。

但是:我已經在我的系統中的幾個庫上試過了,它們都沒有包含任何宏記錄。默認gcc不會發出它們,庫必須編譯爲gcc -g3(該開關增加了調試信息級別)。我想這對你來說是個壞消息。

+0

所以你告訴我,有沒有辦法從調試信息挖掘這個? – 2011-05-17 12:29:47

+0

嗯,其實我錯誤地認爲庫編譯沒有調試信息。事實上,矮人可以提供幫助,讓我稍後更新答案。 – 2011-05-17 12:40:20

相關問題