我有一个实用程序,它使用-M [/ dev / kmem或vmcore]和-N [namelist文件(kernel.debug)]选项从内核崩溃vmcores中提取信息,类似于“vmstat”之类的实用程序使用-M / -N选项
在vmcores上工作usage: vmstat [-afHhimPsz] [-c count] [-M core [-N system]] [-w wait]
vmstat -m -M vmcore -N kernel.debug
但是在将一些内容从内核中移出到内核模块之后,现在在kernel.debug之外有符号。所以现在我不能只传递实用程序-M vmcore -N kernel.debug选项,因为这些符号现在位于内核模块中。除了kernel.debug文件之外,还可以调整libkvm来处理内核模块吗?
为了说明......我想
utility -M vmcore -N(kernel.debug + kernel module)
- Shrikanth R K
答案 0 :(得分:0)
你能使用kgdb
(1)吗?因为最新版本会自动加载模块符号。
否则,如果您想手动执行此操作,则需要遍历linker_files
列表,从linker_files->tqh_first
开始并按照link.tqe_next
指针进行操作,直到找到包含文件名的条目为止你在找。该条目的地址成员是模块的加载地址。使用nm <module.ko> | grep ' t '
,您可以在模块中找到名称和符号偏移。添加模块的加载地址和符号的偏移量,您就拥有符号的地址。