2012-01-30 23 views
5

Çekirdek dökümü analizi için bir araç yazıyorum ve yazdırmak istediğim bir şey, işlemin, işlemin yapıldığı sırada ne kadar sanal bellek kullandığını tahmin etmektir. Bu çekirdek dökümler, çökmelere bağlı olabilir veya gcore kullanılarak manuel olarak alınabilir (örneğin, boyutlandırma için). Esasen, PS VSZ kolonunun eşdeğerini basmak istiyorum.Linux'ta bir çekirdek dökümü ve gdb kullanan bir sanal bellek (VSZ) nasıl kullanılır?

Kendisine ve gdb'ye baktım ve ikincisine odaklandım. Örneğin, ben sadece asılı basit bir program var ve PS bakın:

$ 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 

Ben gcore kullanarak bir çekirdek almak ve bu noktada 4.206.592 bayt VSZ kullanıyor etmektedir. Sonra, info target çıktısını ayrıştıran ve adres aralıklarını özetleyen bir hızlı komut dosyası yazdım ve 1,814,528 bayt elde ediyorum. Ayrıca info proc mappings denedim, ancak bu yalnızca işlem çalışıyorsa çalışır gibi görünüyor.

Herhangi bir fikrin var mı? Benim durumumda

+0

Sadece bakım bilgileri bölümlerini denedim ve biraz daha büyük, ancak benzer sayısı 1,817,528 bayt. – user379184

cevap

1

gdb ve ps çıktısı

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

pmap aynı 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 

İşte gdb bilgi proc haritalama

(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] 

Can göstermek aynı bilgi gösterir süreç hakkında daha fazla bilgi gösterilsin mi?

İlgili konular