2012-01-30 17 views
5

私はコアダンプ解析用のツールを書いています。印刷したいものの1つは、プロセスがダンプ時に使用していた仮想メモリの量の見積もりです。これらのコアダンプは、クラッシュによるものか、gcoreを使用して手作業で取得することができます(サイジングなど)。基本的には、PS VSZ列に相当するものを印刷したいと思います。Linux上でcore dumpとgdbを使用して仮想メモリ(VSZ)を使用すると、どのように近似されますか?

私はreadelfとgdbを調べ、後者に焦点を当てました。例えば、私はちょうどハング簡単なプログラムを持っていると私はPSで参照してください。

$ ps auxwww | grep a.out 
USER  PID %CPU %MEM VSZ RSS TTY  STAT START TIME COMMAND 
root  16644 0.0 0.0 4108 472 pts/5 S+ 13:51 0:00 ./a.out 

私は、gcoreをを使用してコアを取りれることが4206592バイトVSZを使用しての視点。次に、info targetの出力を解析してアドレス範囲を合計すると、1,814,528バイトを取得する簡単なスクリプトを作成しました。私もinfo proc mappingsを試しましたが、プロセスが動作している場合にのみ動作するようです。

アイデア?私の場合は

+0

私はちょうど 'メンテナンス情報セクション'を試してみましたが、やや大きめですが、同様の数の1,817,528バイトがあります。 – user379184

答えて

1

は、GDBとPSの出力が

root  3976 0.0 0.0 1636 640 tty6  Ss+ 08:00 0:00 /sbin/mingetty tty6 

PMAPも同じ1636

3976: /sbin/mingetty tty6 
00110000  4K r-x-- [ anon ] 
001c3000 100K r-x-- /lib/ld-2.5.so 
001dc000  4K r-x-- /lib/ld-2.5.so 
001dd000  4K rwx-- /lib/ld-2.5.so 
001e0000 1256K r-x-- /lib/libc-2.5.so 
0031a000  8K r-x-- /lib/libc-2.5.so 
0031c000  4K rwx-- /lib/libc-2.5.so 
0031d000  12K rwx-- [ anon ] 
08048000  12K r-x-- /sbin/mingetty 
0804b000  4K rw--- /sbin/mingetty 
08dd3000 132K rw--- [ anon ] 
b7f69000  8K rw--- [ anon ] 
b7f79000  4K rw--- [ anon ] 
bff4d000  84K rw--- [ stack ] 
total  1636K 

ここだgdbの情報のprocマッピング

(gdb) info proc mappings 
process 3976 

cmdline = '/sbin/mingetty' 
cwd = '/' 
exe = '/sbin/mingetty' 
Mapped address spaces: 

    Start Addr End Addr  Size  Offset objfile 
     0x110000 0x111000  0x1000 0x110000   [vdso] 
     0x1c3000 0x1dc000 0x19000   0  /lib/ld-2.5.so 
     0x1dc000 0x1dd000  0x1000 0x19000  /lib/ld-2.5.so 
     0x1dd000 0x1de000  0x1000 0x1a000  /lib/ld-2.5.so 
     0x1e0000 0x31a000 0x13a000   0  /lib/libc-2.5.so 
     0x31a000 0x31c000  0x2000 0x139000  /lib/libc-2.5.so 
     0x31c000 0x31d000  0x1000 0x13b000  /lib/libc-2.5.so 
     0x31d000 0x320000  0x3000 0x31d000   
    0x8048000 0x804b000  0x3000   0  /sbin/mingetty 
    0x804b000 0x804c000  0x1000  0x2000  /sbin/mingetty 
    0x8dd3000 0x8df4000 0x21000 0x8dd3000   
    0xb7f69000 0xb7f6b000  0x2000 0xb7f69000   
    0xb7f79000 0xb7f7a000  0x1000 0xb7f79000   
    0xbff4d000 0xbff62000 0x15000 0xbff4d000   [stack] 

できることを示す同じ情報を表示しますプロセスの詳細を表示しますか?

関連する問題