當我查看Linux內核的OOPS輸出時,EIP和其他代碼地址的值在0xC01 -----範圍內。在我的System.map和objdump -S vmlinux
輸出中,所有的代碼地址至少在0xC1以上。我的vmlinux包含調試符號(CONFIG_DEBUG_INFO)。Linux內核文本符號
當我通過串行連接(kgdb)進行調試時,我用gdb ./vmlinux
加載gdb時,我又遇到了同樣的問題,我無法使用System.map和objdump
輸出中的$ eip協調$ eip。當我運行在gdb where
,我得到的堆棧上的混亂的爛攤子:
#0 0xC01----- in ??()
#1 0xC01----- in ??()
#2 0xC01----- in ??()
...
任何人都可以就如何解決這一/這些問題有什麼建議?我主要關心的是,我如何實際將OOPS中的eip值映射到System.map或objdump -S vmlinux
。我知道OOPS會給我函數名和目標代碼的偏移量,但我更關心前面提到的問題,以及爲什麼gdb無法正確顯示堆棧回溯。