我正在使用lldb
和KDK
进行一些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
在内核中无法使用?
如何在这种情况下搜索内核区域?
答案 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
命令将显示所有特定于内核的命令。