如果内核在您不希望的时候崩溃并转存了核心内存数据, 而您没有使用 config -g 构建内核时怎么办? 别慌! 还是有办法找回一些东西的。
当然, 您仍然需要启用崩溃转存。 请参见前面介绍的选项来完成配置。
进入您的内核配置目录 (/usr/src/sys/arch/conf) 并编辑配置文件。 取消下面行前的注释 (或者, 如果没有这行配置, 加上它):
makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols
重新编译内核。 由于 Makefile 的时间戳发生了变化, 将会编译一些其他的目标文件,
例如 trap.o。 幸运的话, 您所增加的 -g 选项不会改变所生成的任何代码,
这样您就有了一个与发生问题的内核代码类似的、 带有调试符号的信内核了。 您至少应使用 size(1)
命令来确认新旧内核的尺寸一致。 如果不一致的话, 您只能就此放弃了。
接下来按照前面介绍的方法来检查内核转存文件。 有些地方的调试符号可能不完整,
此时您会发现前面例子中的调用栈中的某些函数并不显示行号。 如果您需要更多的调试符号,
您应删除对应的目标文件, 并再次重新编译内核, 并重复前面的 gdb -k 会话, 直到了解了足够多的信息。
尽管无法保证这种方法一定能管用, 但通常它还是能解决问题的。
本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.