天天看點

gdb可以查詢執行檔案的宏, 但是查詢不了o檔案的宏

在gcc使用-g3編譯的時候, gdb可以檢視對應c語言的宏.

但是o檔案卻看不了對應的宏,

網上找了半天也沒發現什麼有用的地方, 隻能自己看gdb的源代碼調

一路調試了半天, 找到了個關鍵地方

函數dwarf_decode_macros裡面解析macinfo_type的時候, a.out和w.o有所差別

a.out檔案的macinfo_type序列是dw_macro_import dw_macro_start_file

o檔案的macinfo_type序列是5個dw_macro_define_strp

而在gdb内部産生macro表格的路徑是由dw_macro_start_file開始的

下一步要做的就是看看如何讓gcc在生産o檔案的時候, section .debug_macro裡面帶上dw_macro_start_file

看遍gcc選項也沒發現什麼, 難道又要去看gcc源代碼了, 這種突如其來的領域問題真是難搞

繼續閱讀