我正在编写一个程序来跟踪子进程调用的每个系统调用,并确定它的确切内存使用情况(不包括共享内存)。
这是我的计划。
让孩子的进程被父亲的进程所追踪,
如果子进程进行系统调用,父进程将收到SIGTRAP,
然后用ptrace获取syscall id (PTRACE_PEEKUSER、child_pid、4*ORIG_EAX、NULL)。
当id等于SYS_brk、SYS_sbrk、SYS_mmap2、SYS_mmap、SYS_mremap、SYS_munmap时,
我能够获得调用的参数并计算内存量。
但困扰我的是
发布于 2012-02-27 17:01:18
为了确定pid 1234进程的内存使用情况,我建议按顺序读取和解析/proc/1234/maps或/proc/1234/smaps伪文件。/proc/1234/下的其他文件也可能相关(例如/proc/1234/statm和/proc/1234/status)
从进程内部,您可以读取/proc/self/maps或/proc/self/smaps (以及/proc/self/statm和/proc/self/status)。
有关详细信息,请阅读proc(5)手册页。
还有pmap命令
https://stackoverflow.com/questions/9466499
复制相似问题