Directorio de artículos
1. comando pmap
pmap
Comando para ver información sobre la imagen de memoria del proceso, la salida del contenido /proc/<pid>/maps
y /proc/<pid>/smaps
estos dos archivos, maps
el archivo contiene una descripción sobre cada pieza de memoria, smaps
contiene detalles específicos de cada sección
1.1 Cómo utilizar
Se man pmap
puede utilizar en el sistema Linux para ver su archivo de ayuda. El formato de este comando es el pmap [options] pid
siguiente:
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 gdb
herramienta 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 pmap
comando de dirección de inicio de memoria para ver, Address
el campo es la dirección de memoria, pero tenga cuidadoNecesita cambiar el 0 alto de la dirección al 0x
principioDicho vertedero anterior 0000000000400000 开始,0000000000600000 结束的内存
, debe convertirse 0x400000 0x600000
o 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.dump
para 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
perf
la herramienta para continuar la investigación. Use laperf 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ónperf report -i perf.data
Ver informe