Distribución de memoria de proceso de vista de Linux

1. comando pmap

pmapComando para ver información sobre la imagen de memoria del proceso, la salida del contenido /proc/<pid>/mapsy /proc/<pid>/smapsestos dos archivos, mapsel archivo contiene una descripción sobre cada pieza de memoria, smapscontiene detalles específicos de cada sección

1.1 Cómo utilizar

Se man pmappuede utilizar en el sistema Linux para ver su archivo de ayuda. El formato de este comando es el pmap [options] pidsiguiente:

Opciones Caracteristicas
-x, - extendido Mostrar formato extendido
-d, --dispositivo Formato del dispositivo de visualización
-q, --quiet No mostrar encabezado ni líneas finales
-A, - rango bajo, alto Muestra los resultados de un rango de direcciones dado, los parámetros están separados por comas
-X Muestra información más detallada que la opción -x, la información proviene del archivo /proc/PID/smaps
-XX Muestra toda la información que puede proporcionar el kernel
-c, --read-rc Leer la configuración predeterminada
-V, --versión Mostrar información de versión

1.2 Ejemplo

pmap -x 7642 Comando para imprimir la información de la memoria del proceso 7642, donde Los significados de los campos de formato extendido y formato de dispositivo son los siguientes

Campo sentido
Habla a Dirección de inicio de la imagen
Kbytes Tamaño de la imagen
RSS Tamaño del conjunto residente
Sucio Tamaño de página sucio
Modo Permisos de imagen
Cartografía Archivo de soporte de imagen, [anon] se asigna memoria [pila] es pila de programa
Compensar Desplazamiento de archivo
Dispositivo Nombre del equipo
// 进程启动命令
7642:   java -Xmx256m -server -XX:+PrintGCApplicationStoppedTime -jar bin/center.jar 
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000000400000       4       0       0 r-x-- java
0000000000600000       4       4       4 rw--- java
00000000018dc000    1208    1092    1092 rw---   [ anon ]
00000000f0000000  257536  134672  134672 rw---   [ anon ]
00000000ffb80000    4608       0       0 -----   [ anon ]
0000000100000000   12080   12052   12052 rw---   [ anon ]
0000000100bcc000 1036496       0       0 -----   [ anon ]
00007f53dda8d000     256      60      60 rw---   [ anon ]
......

2. herramienta de depuración de gdb

Usando la gdbherramienta para el rango de direcciones especificado del volcado de memoria, esta operación afecta el servicio, se debe tener en cuenta volcar el tamaño del bloque de memoria, con precaución. El significado del siguiente comando esdump especifica que la dirección de inicio 13618 del proceso es 0x7ffc0508b000, la dirección final es 0x7ffc0508b000 más la memoria del desplazamiento 132000 y guárdelo en el archivo 199.dump

gdb --batch --pid 13618 -ex "dump memory 199.dump 0x7ffc0508b000 0x7ffc0508b000+132000"

Puede usar el pmapcomando de dirección de inicio de memoria para ver, Addressel campo es la dirección de memoria, pero tenga cuidadoNecesita cambiar el 0 alto de la dirección al 0xprincipioDicho vertedero anterior 0000000000400000 开始,0000000000600000 结束的内存, debe convertirse 0x400000 0x600000o usarse de manera compensada0x400000 0x400000+4000

fuera del archivo de volcado es en realidad una forma binaria de la vista directa es un montón de basura, puede usar strings -n 10 199.dumppara ver más de 10 caracteres de contenido de memoria

  • De hecho, incluso hasta este punto es difícil ver información útil, el seguimiento puede utilizar perfla herramienta para continuar la investigación. Use la perf record -g -p <pid>pila de llamadas de función de monitoreo abierta, ejecutándose durante algún tiempo después del final de Ctrl + C, generará un archivo perf.data, ejecución perf report -i perf.dataVer informe

Supongo que te gusta

Origin blog.csdn.net/weixin_45505313/article/details/105287599
Recomendado
Clasificación