我正在编写一个程序来跟踪子进程调用的每个系统调用并确定它的确切内存使用情况(不包括共享内存)。
这是我的计划。
让父进程跟踪子进程,
如果子进程进行系统调用,父进程将收到 SIGTRAP,
然后使用 ptrace(PTRACE_PEEKUSER, child_pid, 4*ORIG_EAX, NULL) 获取系统调用 ID。
当 id 等于 SYS_brk、SYS_sbrk、SYS_mmap2、SYS_mmap、SYS_mremap、SYS_munmap 时,
我能够获取调用参数并计算内存使用量。
但这让我很困扰
我不确定如何计算。
SYS_mmap2 有超过 6 个参数,我该如何获取呢?