我有一個C++對象文件,其中包含一些C++模板函數的實例。所討論的目標文件爲幾個不同的模板參數組合實例化相同的函數。我試圖調試一個問題,並希望看看模板函數的特定實例的反彙編(也就是我知道我想要檢查的函數的模板參數)。我通常會使用objdump
來反彙編目標文件,但它(至少默認情況下)無法解壓C++函數名稱。有沒有辦法做到這一點?目標文件是使用gcc 4.6.1創建的。可以objdump C++模板函數的un-mangle名稱嗎?
14
A
回答
13
管它通過c++filt
?可能需要給它-n
,這取決於符號是否來自前面的下劃線。
8
objdump -C
是否如Jason R在評論中提到的那樣。
man objdump
說:
解碼(還原函數)低級別符號名到用戶級別的名稱。除了刪除由系統預設的任何初始下劃線外,這使得C++函數名稱可讀。不同的編譯器有不同的移動樣式。可選的demangling樣式參數可用於爲編譯器選擇合適的demangling樣式。上一個
operator new[]
和objdump -CSr
調用
輸出示例:
char *sn = new char[4];
10: bf 04 00 00 00 mov $0x4,%edi
15: e8 00 00 00 00 callq 1a <main+0x1a>
16: R_X86_64_PC32 operator new[](unsigned long)-0x4
沒有-C
它會顯示重整名稱_Znam
。
nm
也有該選項。
相關問題
- 1. Delphi - BPL中的unmangle名稱
- 2. 可變模板與C++的模板函數名稱11
- 3. 模板函數可以比較兩個類型名稱嗎?
- 4. C++類模板可以將方法名稱作爲模板參數嗎?
- 5. C++模板:我可以調用名稱基於輸入類型名稱的函數嗎?
- 6. 不同名稱空間的模板模板參數可以成爲朋友嗎?
- 7. 參數可以在C++中的函數模板中轉換嗎?
- 8. 可以使用宏來模擬C++模板化函數嗎?
- 9. 我可以使用函數作爲函數的名稱嗎?
- 10. 根據模板參數的模板函數名稱
- 11. 帶模板參數或類型名稱的模板函數
- 12. 模板可以在C++函數中擴展一個類嗎?
- 13. C++構造函數可以是模板嗎?
- 14. 在C++模板類中,我可以使用相同的名稱來鍵入模板參數嗎?
- 15. 可以使用C++中的模板名稱來訪問Bitfield成員嗎?
- 16. 模板類中成員函數的C++名稱解析
- 17. xslt模板可以攜帶名稱和匹配屬性嗎?
- 18. 類可以用作通用名稱空間(使用模板)嗎?
- 19. 無法較短的名稱分配給C++函數模板
- 20. 將typname插入模板函數名稱
- 21. 使用不帶模板參數的C++模板名稱
- 22. 龍(可讀)名稱/模板
- 23. 模板模板C++函數
- 24. 給定數據模板名稱的匹配模板名稱
- 25. 可以明確指定構造函數的模板參數嗎?
- 26. C++模板函數別名作爲可變參數模板參數
- 27. C++,名稱空間,模板和無匹配函數調用
- 28. 我可以傳遞函數名稱作爲參數嗎?
- 29. 類中的私有函數名稱可以重複嗎?
- 30. C++函數重載,表達式模板和名稱空間
看起來像那樣會工作。我還發現了'objdump'的'-C'選項,它似乎至少適用於我的應用程序。 – 2012-02-23 18:51:02
@JasonR更好。從歷史上看,有許多選項和變體名稱,例如'nm ++',但它們都被擊中和錯過,我養成了一切管道的習慣。 – smparkes 2012-02-23 18:57:28
@JasonR,感謝張貼這個......'-C'在我的objdump版本中沒有記錄(沒有用--help顯示),但它仍然有效。 – 2013-11-25 14:51:42