4

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

对于有经验的开发人员来说,这可能是微不足道的,但我无法弄清楚这个问题的解决方案。

我有内核恐慌,当它恐慌时,我得到了恐慌的回溯。

回溯表明恐慌发生在 say foo_bar() + 0x94。如何提取不对应的行foo_bar() + 0x94

内核是用调试符号构建的。我试过 greppingnm kernel但它只包含调试符号。

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

4

2 回答 2

2

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

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

它详细解释了如何创建核心文件以及如何调用 gdb。

于 2015-04-20T08:52:20.573 回答
2

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

于 2015-04-21T14:46:35.793 回答