在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源代碼了, 這種突如其來的領域問題真是難搞