0

子プロセスによって呼び出されたすべてのシステムコールをトレースし、その正確なメモリ使用量(共有メモリを除く)を判別するプログラムを作成しています。

これが私の計画です。

子プロセスを父プロセスに追跡させ、

子プロセスがシステムコールを行う場合、親プロセスはSIGTRAPを受け取ります。

次に、ptrace(PTRACE_PEEKUSER、child_pid、4 * ORIG_EAX、NULL)を使用してシステムコールIDを取得します。

idがSYS_brk、SYS_sbrk、SYS_mmap2、SYS_mmap、SYS_mremap、SYS_munmap、

呼び出しのパラメータを取得し、メモリ使用量を計算することができます。

でもそれは私を悩ませます

  1. 計算方法がわかりません。

  2. SYS_mmap2には6つを超えるパラメーターがありますが、どのように取得すればよいですか?

4

1 に答える 1

2

/proc/1234/mapspid 1234 のプロセスのメモリ使用量を判断するには、または/proc/1234/smaps疑似ファイルを順次読み取り、解析することをお勧めします。以下の他のファイル/proc/1234/も関連する可能性があります(例/proc/1234/statmおよび/proc/1234/status

プロセス内から/proc/self/mapsor /proc/self/smaps(および、たとえば/proc/self/statmand /proc/self/status) を読み取ることができます。

詳細については、proc(5)のマニュアル ページを参照してください。

pmapコマンドもあります

于 2012-02-27T17:01:18.287 に答える