识别 macOS 当前进程中的堆栈和堆段

Zoh*_*r81 6 c c++ macos objective-c heap-memory

我想将内存分析器添加到在 macOS 下运行的守护进程。在linux中,我可以简单地检查/proc/<pid>/map进程中的任何映射内存,并查找pathname = [heap]或pathname = [stack]。

是否有任何替代的 mac syscall/MIG/mach 消息用于此目的?

我试图查看是否proc_pidinfo包含任何有价值的信息,但不幸的是没有任何与我的需求相关的信息。

请注意,苹果为调用的其他远程进程提供了这样的工具vmmap,但它根本不提供任何 api(它只是命令行工具),并且没有满足此需求的公共 API,但也许有一个 API 可以从“内部”提取此信息“这个过程本身。

小智 6

我不知道它使用哪些公共 API(如果有的话),但/proc/$pid/mapsmacOS 中与 Linux 最接近的等效项是该vmmap实用程序。使用 PID 作为参数运行它将为您提供有关进程映射的所有区域的详细报告,包括有关malloc区域内内存使用情况的一些有趣的详细信息。