我正在 FreeBSD 内核上测试一个新的驱动程序。
对于有经验的开发人员来说,这可能是微不足道的,但我无法弄清楚这个问题的解决方案。
我有内核恐慌,当它恐慌时,我得到了恐慌的回溯。
回溯表明恐慌发生在 say foo_bar() + 0x94
。如何提取不对应的行foo_bar() + 0x94
?
内核是用调试符号构建的。我试过 greppingnm kernel
但它只包含调试符号。
我该怎么做才能找到确切的行号?
我正在 FreeBSD 内核上测试一个新的驱动程序。
对于有经验的开发人员来说,这可能是微不足道的,但我无法弄清楚这个问题的解决方案。
我有内核恐慌,当它恐慌时,我得到了恐慌的回溯。
回溯表明恐慌发生在 say foo_bar() + 0x94
。如何提取不对应的行foo_bar() + 0x94
?
内核是用调试符号构建的。我试过 greppingnm kernel
但它只包含调试符号。
我该怎么做才能找到确切的行号?
我建议阅读 FreeBSD 内核调试手册
https://www.freebsd.org/doc/en/books/developers-handbook/kerneldebug.html
它详细解释了如何创建核心文件以及如何调用 gdb。
配置 crashdumps - 通常只是将 'dumpdev="AUTO"' 添加到 /etc/rc.conf 并重新启动 - 在崩溃和随后的重新启动后,使用调试器分析转储,如下所示:“kgdb /boot/kernel/kernel / var/crash/vmcore.latest”。“kgdb”这个东西基本上是为了支持内核调试而破解的GDB;“where”命令应该向您显示回溯。