Linux,/proc/[pid]/mapsでメモリマップを確認

スポンサーリンク

鍛錬 796

Linux,/proc/[pid]/mapsでメモリマップを確認

プロセスのメモリマップを確認する方法の一つとして、/proc/[pid]/maps で確認する方法があります。
 
確認方法は、以下に示す通りです。

cat /proc/プロセスID/maps

フォーマット

上記を実行すると左から順に以下のフォーマットで表示されます。

[address] [perms] [offset] [dev] [inode] [pathname]

以下は、上記の項目についてです。

項目 機能
address プロセスのアドレス空間
perms パーミッション
offset ファイル等でのオフセット
dev デバイス (メジャーデバイス番号:マイナーデバイス番号)
inode デバイスのiノード番号
pathname マッピングに対応するファイル
 
スポンサーリンク

プログラム

今回は、プログラムを実行してメモリマップを確認します。

以下は、今回実行するプログラム、sample.c です。

1秒間隔で無限ループします。

// include
#include <stdio.h>
#include <unistd.h>

// main
int main(void)
{
	while (1) {
		sleep(1);
	}
	
	return 0;
}

実行結果

以下は、指定したプロセスのメモリマップを確認しています。

***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ ps x | grep sample | grep -v grep
  8421 pts/1    S      0:00 ./sample
***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ cat /proc/8421/maps
55831ff71000-55831ff72000 r-xp 00000000 08:01 793246                     /home/***/***/test/c/sample
558320171000-558320172000 r--p 00000000 08:01 793246                     /home/***/***/test/c/sample
558320172000-558320173000 rw-p 00001000 08:01 793246                     /home/***/***/test/c/sample
7f6e4162d000-7f6e41814000 r-xp 00000000 08:01 398266                     /lib/x86_64-linux-gnu/libc-2.27.so
7f6e41814000-7f6e41a14000 ---p 001e7000 08:01 398266                     /lib/x86_64-linux-gnu/libc-2.27.so
7f6e41a14000-7f6e41a18000 r--p 001e7000 08:01 398266                     /lib/x86_64-linux-gnu/libc-2.27.so
7f6e41a18000-7f6e41a1a000 rw-p 001eb000 08:01 398266                     /lib/x86_64-linux-gnu/libc-2.27.so
7f6e41a1a000-7f6e41a1e000 rw-p 00000000 00:00 0 
7f6e41a1e000-7f6e41a45000 r-xp 00000000 08:01 398259                     /lib/x86_64-linux-gnu/ld-2.27.so
7f6e41c2c000-7f6e41c2e000 rw-p 00000000 00:00 0 
7f6e41c45000-7f6e41c46000 r--p 00027000 08:01 398259                     /lib/x86_64-linux-gnu/ld-2.27.so
7f6e41c46000-7f6e41c47000 rw-p 00028000 08:01 398259                     /lib/x86_64-linux-gnu/ld-2.27.so
7f6e41c47000-7f6e41c48000 rw-p 00000000 00:00 0 
7fff5fe46000-7fff5fe67000 rw-p 00000000 00:00 0                          [stack]
7fff5ff1a000-7fff5ff1d000 r--p 00000000 00:00 0                          [vvar]
7fff5ff1d000-7fff5ff1f000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]

 
上記に示した通り、指定したプロセスのメモリマップを確認することができました。

スポンサーリンク

シェアする

フォローする