为什么在lldb中输入image lookup <address >没有输出?

Why isn't there an output when I enter image lookup <address > in lldb?

所以当我在 lldb 中输入图像查找命令时,我没有得到任何输出。顺便说一句,我正在使用调试服务器。我在 google 中搜索了有关此问题的内容,但没有找到任何内容。

通常这意味着地址是堆栈或堆内存,因此它不在图像列表中。 vmmap 工具(来自终端的 运行)是查看应用程序中已分配内存的好方法。 运行 喜欢:

 $ vmmap <PID> <ADDRESS> 

如果这是分配的内存,vmmap 会告诉您它是如何分配的。 lldb 有一个 memory region 命令,但是来自 vmmap 的数据目前更有用...

您可以使用 macOS malloc 库的堆栈日志记录功能来追踪它的分配位置。您必须在您的环境中使用 MallocStackLoggingNoCompact 启动应用程序。然后您可以在终端中使用 malloc_history,或者在 lldb 中执行:

(lldb) env MallocStackLoggingNoCompact=1
(lldb) run
...
(lldb) command script import lldb.macosx.heap
(lldb) malloc_info -s 0x100300000
0x0000000100300000: malloc(   112) -> 0x100300000
stack[0]: addr = 0x100300000, type=malloc, frames:
     [0] 0x00007fff68e0c601 libsystem_malloc.dylib`malloc_zone_malloc + 140
     [1] 0x00007fff68e0c558 libsystem_malloc.dylib`malloc + 21
     [2] 0x0000000100000f59 foo`main + 25 at foo.c:7:10
     [3] 0x00007fff68c52341 libdyld.dylib`start + 1