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