当我查看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无法正确显示堆栈回溯。