gpt4 book ai didi

c - mach_vm_region 与 mach_vm_region_recurse

转载 作者:太空狗 更新时间:2023-10-29 17:12:32 26 4
gpt4 key购买 nike

mach_vm_regionmach_vm_region_recurse 有什么区别,在什么情况下你会使用哪个?

函数声明的签名是:

kern_return_t mach_vm_region
(
vm_map_t target_task,
mach_vm_address_t *address,
mach_vm_size_t *size,
vm_region_flavor_t flavor,
vm_region_info_t info,
mach_msg_type_number_t *infoCnt,
mach_port_t *object_name
);
kern_return_t mach_vm_region_recurse
(
vm_map_t target_task,
mach_vm_address_t *address,
mach_vm_size_t *size,
natural_t *nesting_depth,
vm_region_recurse_info_t info,
mach_msg_type_number_t *infoCnt
);

如果我想...我应该使用哪个函数

  1. 找到进程的所有有效内存地址?
  2. 找到进程的所有私有(private)内存?

最佳答案

区别在于vm_region_recurse_64 版本允许您查看submaps 的内容。 .我不会假装自己是这个主题的专家,但据我所知,你遇到子图的最常见的地方是遍历从 dyld 缓存映射框架的内存(从 SHARED_REGION_BASE_X86_64 开始) = 0x00007FFF7000000 在 x86_64 mac 上)。

vm_region 似乎将子图作为单个区域返回。

我认为子图中可以有私有(private)映射。

这是一个例子:

                       00007fff70000000-00007fff76c00000 vm_region
00007fff70000000-00007fff76c00000 vm_region_recurse_64 (depth=0, is_submap == TRUE)
00007fff7695b000-00007fff76a00000 vm_region_recurse_64 #1 (depth=1, is_submap == FALSE)
00007fff76a00000-00007fff76c00000 vm_region_recurse_64 #2 (depth=1, is_submap == FALSE)

下面是 vmstat -interleaved -v 报告的方式:

map                    00007fff70000000-00007fff76c00000 r--/rwx process-only submap
unused split lib 00007fff7695b000-00007fff76999000 system shared library region not used by this process
__DATA 00007fff76999000-00007fff7699a000 /usr/lib/system/libcompiler_rt.dylib
unused split lib 00007fff7699a000-00007fff769a2000 system shared library region not used by this process
__DATA 00007fff769a2000-00007fff769a3000 /usr/lib/system/libsystem_notify.dylib
unused split lib 00007fff769a3000-00007fff76a00000 system shared library region not used by this process
unused split lib 00007fff76a00000-00007fff76c00000 system shared library region not used by this process

关于c - mach_vm_region 与 mach_vm_region_recurse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17025919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com