如何找到FreeBSD内核恐慌的确切行号?

时间:2015-04-20 04:28:00

标签: debugging stack-trace freebsd debug-symbols panic

我在FreeBSD内核上测试一个新的驱动程序。

对于有经验的开发人员来说,这可能是微不足道的,但我无法找到解决此问题的方法。

我有一个内核恐慌,当它发生恐慌时,我得到恐慌的回溯。

回溯说,恐慌发生在foo_bar() + 0x94。如何提取与foo_bar() + 0x94对应的行?

内核使用调试符号构建。我试过grepping nm kernel,但它只包含调试符号。

我该怎么做才能找到确切的行号?

2 个答案:

答案 0 :(得分:2)

我建议阅读关于内核调试的FreeBSD手册

https://www.freebsd.org/doc/en/books/developers-handbook/kerneldebug.html

详细说明了如何创建核心文件以及如何调用gdb。

答案 1 :(得分:2)

配置crashdumps - 它通常只是将'dumpdev =“AUTO”'添加到/etc/rc.conf并重新启动 - 并且在崩溃和后续重启之后,使用调试器分析转储,如下所示:“kgdb / boot / kernel / kernel /var/crash/vmcore.latest“。 “kgdb”的内容基本上是GDB被破解以支持内核调试; “where”命令应该显示回溯。