
Una versión para Linux de la herramienta ProcDump Sysinternals
ProcDump es una reinvención de la clásica herramienta ProcDump del conjunto Sysinternals para Windows, adaptada para Linux y Mac. ProcDump proporciona una manera conveniente para que los desarrolladores de Linux y Mac creen volcados de núcleo de sus aplicaciones basados en disparadores de rendimiento. ProcDump para Linux y Mac es parte de Sysinternals.

gdb >= 7.6.1Consulte las instrucciones de instalación aquí.
Consulte las instrucciones de compilación aquí.
CAMBIO IMPORTANTE Con el lanzamiento de ProcDump 1.3, los interruptores ahora están alineados con la versión de Windows de ProcDump. Tenga en cuenta que la versión Mac actualmente tiene un conjunto limitado de disparadores.
Uso de captura:
procdump [-n Count]
[-s Seconds]
[-c|-cl CPU_Usage]
[-m|-ml Commit_Usage1[,Commit_Usage2...]]
[-gcm [<GCGeneration>: | LOH: | POH:]Memory_Usage1[,Memory_Usage2...]]
[-gcgen Generation]
[-restrack [nodump]]
[-sr Sample_Rate]
[-tc Thread_Threshold]
[-fc FileDescriptor_Threshold]
[-sig Signal_Number1[,Signal_Number2...]]
[-e]
[-f Include_Filter,...]
[-fx Exclude_Filter]
[-mc Custom_Dump_Mask]
[-pf Polling_Frequency]
[-o]
[-log syslog|stdout]
{
{{[-w] Process_Name | [-pgid] PID} [Dump_File | Dump_Folder]}
}
Opciones:
-n Número de volcados a escribir antes de salir.
-s Segundos consecutivos antes de escribir un volcado (por defecto 10).
-c Umbral de CPU por encima del cual crear un volcado del proceso.
-cl Umbral de CPU por debajo del cual crear un volcado del proceso.
-m Umbral(es) de uso de memoria (MB) por encima del cual crear volcados.
-ml Umbral(es) de uso de memoria (MB) por debajo del cual crear volcados.
-gcm [.NET] Umbral(es) de memoria de GC (MB) por encima del cual crear volcados para la generación o el montón especificado (por defecto es el uso total de memoria .NET).
-gcgen [.NET] Crear volcado cuando el recolector de basura de la generación especificada comienza y termina.
-restrack Activar seguimiento de fugas de memoria (familia de API malloc). Si se usa sin otros disparadores, use 't' para capturar manualmente un informe restrack. Cuando se usa con otros disparadores, la opción 'nodump' puede usarse para evitar la generación de volcados y solo producir informes restrack.
-sr Tasa de muestreo al usar -restrack.
-tc Umbral de recuento de hilos por encima del cual crear un volcado del proceso.
-fc Umbral de recuento de descriptores de archivo por encima del cual crear un volcado del proceso.
-sig Lista separada por comas de números de señal durante la cual cualquier señal resulta en un volcado del proceso.
-e [.NET] Crear volcado cuando el proceso encuentra una excepción.
-f Filtro (incluir) sobre el contenido de excepciones .NET (separado por comas). Se admiten comodines (*).
-fx Filtro (excluir) sobre el contenido de las pilas de llamadas de -restrack. Se admiten comodines (*).
-mc Máscara de volcado de núcleo personalizada (en hex) que indica qué memoria debe incluirse en el volcado de núcleo. Consulte 'man core' (/proc/[pid]/coredump_filter) para opciones disponibles.
-pf Frecuencia de sondeo.
-o Sobrescribir archivo de volcado existente.
-log Escribe el seguimiento extendido de ProcDump en el flujo de salida especificado (syslog o stdout).
-w Esperar a que se inicie el proceso especificado si no se está ejecutando.
-pgid El ID del proceso especificado se refiere a un ID de grupo de procesos.
El interruptor -restrack activa el seguimiento de recursos, permitiendo monitorear e informar de cualquier asignación de recursos que no haya sido liberada al momento de generar el volcado de núcleo. Los resultados se guardan en un archivo con extensión '.restrack'. Actualmente, se rastrean las siguientes funciones de asignación/desasignación de recursos:
Asignación:
Desasignación:
La versión para Mac actualmente no implementa el seguimiento de recursos.
Los siguientes ejemplos tienen como objetivo un proceso con pid == 1234
Lo siguiente creará un volcado de núcleo inmediatamente.
sudo procdump 1234
Lo siguiente creará 3 volcados de núcleo con 10 segundos de separación.
sudo procdump -n 3 1234
Lo siguiente creará 3 volcados de núcleo con 5 segundos de separación.
sudo procdump -n 3 -s 5 1234
Lo siguiente creará un volcado de núcleo cada vez que el proceso tenga un uso de CPU >= 65%, hasta 3 veces, con al menos 10 segundos entre cada volcado.
sudo procdump -c 65 -n 3 1234
Lo siguiente creará un volcado de núcleo cada vez que el proceso tenga un uso de CPU >= 65%, hasta 3 veces, con al menos 5 segundos entre cada volcado.
sudo procdump -c 65 -n 3 -s 5 1234
Lo siguiente creará un volcado de núcleo cuando el uso de CPU esté fuera del rango [10,65].
sudo procdump -cl 10 -c 65 1234
Lo siguiente creará un volcado de núcleo cuando el uso de CPU sea >= 65% o el uso de memoria sea >= 100 MB.
sudo procdump -c 65 -m 100 1234
Lo siguiente creará un volcado de núcleo cuando el uso de memoria sea >= 100 MB, seguido de otro volcado cuando el uso de memoria sea >= 200 MB.
sudo procdump -m 100,200 1234
Lo siguiente creará un informe de fuga de memoria (sin volcados) cada vez que el usuario presione 't':
sudo procdump -restrack 1234
Lo siguiente creará 3 informes de fuga de memoria (sin volcados) con 5 segundos de separación:
sudo procdump -n 3 -s 5 -restrack nodump 1234
Lo siguiente creará un volcado de núcleo y un informe de fuga de memoria cuando el uso de memoria sea >= 100 MB
sudo procdump -m 100 -restrack 1234
Lo siguiente creará un informe de fuga de memoria (sin volcados) cuando el uso de memoria sea >= 100 MB
sudo procdump -m 100 -restrack nodump 1234
Lo siguiente creará un volcado de núcleo y un informe de fuga de memoria cuando el uso de memoria sea >= 100 MB muestreando cada 10ª asignación de memoria.
sudo procdump -m 100 -restrack -sr 10 1234
Lo siguiente creará un volcado de núcleo y un informe de fuga de memoria cuando el uso de memoria sea >= 100 MB y excluirá cualquier pila de llamadas que contenga marcos con la cadena "cache" en ellos.
sudo procdump -m 100 -restrack -fx *cache* 1234
Lo siguiente creará un volcado de núcleo cuando el uso total de memoria .NET sea >= 100 MB, seguido de otro volcado cuando el uso de memoria sea >= 200 MB.
sudo procdump -gcm 100,200 1234
Lo siguiente creará un volcado de núcleo cuando el uso de memoria .NET para la generación 1 sea >= 1 MB, seguido de otro volcado cuando el uso de memoria sea >= 2 MB.
sudo procdump -gcm 1:1,2 1234
Lo siguiente creará un volcado de núcleo cuando el uso de memoria del Montón de Objetos Grandes (LOH) de .NET sea >= 100 MB, seguido de otro volcado cuando el uso de memoria sea >= 200 MB.
sudo procdump -gcm LOH:100,200 1234
Lo siguiente creará un volcado de núcleo al inicio y al final de una recolección de basura de la generación 1 de .NET.
sudo procdump -gcgen 1
Lo siguiente creará un volcado de núcleo en el directorio /tmp inmediatamente.
sudo procdump 1234 /tmp
Lo siguiente creará un volcado de núcleo en el directorio actual con el nombre dump_0.1234. Si se usa -n, los archivos se nombrarán dump_0.1234, dump_1.1234, etc.
sudo procdump 1234 dump
Lo siguiente creará un volcado de núcleo cuando ocurra una señal SIGSEGV.
sudo procdump -sig 11 1234
Lo siguiente creará un volcado de núcleo cuando ocurra una señal SIGSEGV donde el volcado de núcleo contenga solo asignaciones privadas anónimas.
sudo procdump -mc 1 -sig 11 1234
Lo siguiente creará un volcado de núcleo cuando la aplicación .NET objetivo lance una System.InvalidOperationException.
sudo procdump -e -f System.InvalidOperationException 1234
El filtro de inclusión admite coincidencias parciales y con comodines, por lo que lo siguiente también creará un volcado de núcleo para System.InvalidOperationException.
sudo procdump -e -f InvalidOperation 1234
o
sudo procdump -e -f "*Invali*Operation*" 1234
Todas las opciones también se pueden usar con
-w, para esperar a cualquier proceso con el nombre dado.
Lo siguiente espera a un proceso llamado my_application y crea un volcado de núcleo inmediatamente cuando se encuentra.
sudo procdump -w my_application
Si está interesado en corregir problemas y contribuir directamente al código base, consulte el documento Cómo Contribuir, que cubre lo siguiente:
Consulte también nuestro Código de Conducta.
Copyright (c) Microsoft Corporation. Todos los derechos reservados.
Licenciado bajo la Licencia MIT.
ProcDump para Linux: