osx内核调试不能' malloc_get_all_zones'

时间:2015-07-27 08:41:17

标签: macos debugging kernel

我正在使用lldbKDK进行一些OSX内核调试。

当内核崩溃时,我想查看区域,并搜索区域。 所以我用:

(lldb) command script import lldb.macosx.heap
(lldb) cstr_refs CSTRING

此命令始终在Ring3调试中工作,但在内核调试时,lldb给我一个错误:

error: error: use of undeclared identifier 'malloc_get_all_zones'
error: 1 errors parsing expression

脚本heap.py在内核中无法使用?

如何在这种情况下搜索内核区域?

1 个答案:

答案 0 :(得分:1)

更熟悉内核问题的人可能会告诉您如何从内核中获取所需的信息。我可以回答关于" heap.py"的部分。它仅用于调试userland程序时使用。它依赖于userland malloc实现的细节,它依赖于能够调用debugee中的函数,这在调试内核时是不可能的。

注意,如果您获得了KDK,那么您拥有了mach内核的dSYM,它定义了一系列在内核数据结构中发挥作用的命令。可能是其中一人会告诉你你想知道什么。记得运行lldb命令:

(lldb) settings set target.load-script-from-symbol-file true

为了允许lldb从定义所有这些宏的dSYM读取Python。然后运行lldb help命令将显示所有特定于内核的命令。