【发布时间】:2012-02-27 14:17:57
【问题描述】:
我正在编写一个程序来跟踪子进程调用的每个系统调用,并确定它的确切内存使用情况(不包括共享内存)。
这是我的计划。
让父进程跟踪子进程,
如果子进程进行系统调用,父进程将收到 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 个参数,我该如何获取呢?
【问题讨论】:
-
有什么问题,例如解析
ps的输出? -
@DietrichEpp,至少你应该使用
libprocps4-dev之类的库,而不是读取ps的输出。