2017-06-21 109 views

回答

1

我不知道如何直接从kext打印符号化堆栈跟踪。通过将keepsyms=1添加到boot-args nvram变量,您可以获得符号化的恐慌日志。我怀疑这个数据结构有私人链接,所以你可能无法在你自己的kext中复制符号化的恐慌代码。 (这是在XNU源的osfmk/i386/AT386/model_dep.c但如果你想尝试。)

你的另一个选择是通过atos命令行工具从OSReportWithBacktrace发送输出。对于kext符号,您需要从kextstat中找到kext的加载地址,并将其传递给-l命令行参数。

最后,您当然可以使用lldb内核调试来获取堆栈跟踪。如果您需要在早期kext加载期间设置断点,则在您有机会从lldb命令行执行该操作之前,可以在代码中要插入调试程序的位置插入__asm__("int $3")(IIRC)。

相关问题