
Eine Linux-Version des ProcDump Sysinternals-Tools
ProcDump ist eine Linux- und Mac-Neugestaltung des klassischen ProcDump-Tools aus der Sysinternals-Suite für Windows. ProcDump bietet Linux- und Mac-Entwicklern eine bequeme Möglichkeit, Core Dumps ihrer Anwendungen basierend auf Leistungsauslösern zu erstellen. ProcDump für Linux und Mac ist Teil von Sysinternals.

gdb >= 7.6.1Installationsanweisungen finden Sie hier.
Build-Anweisungen finden Sie hier.
BREAKING CHANGE Mit der Veröffentlichung von ProcDump 1.3 sind die Schalter jetzt an die Windows-ProcDump-Version angeglichen. Bitte beachten Sie, dass die Mac-Version derzeit nur eine begrenzte Anzahl von Auslösern unterstützt.
Capture Usage:
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]}
}
Options:
-n Number of dumps to write before exiting.
-s Consecutive seconds before dump is written (default is 10).
-c CPU threshold above which to create a dump of the process.
-cl CPU threshold below which to create a dump of the process.
-m Memory commit threshold(s) (MB) above which to create dumps.
-ml Memory commit threshold(s) (MB) below which to create dumps.
-gcm [.NET] GC memory threshold(s) (MB) above which to create dumps for the specified generation or heap (default is total .NET memory usage).
-gcgen [.NET] Create dump when the garbage collection of the specified generation starts and finishes.
-restrack Enable memory leak tracking (malloc family of APIs). If used without other triggers, use 't' to manually capture a restrack report. When used with other triggers, the 'nodump' option can be used to prevent dump generation and only produce restrack report(s).
-sr Sample rate when using -restrack.
-tc Thread count threshold above which to create a dump of the process.
-fc File descriptor count threshold above which to create a dump of the process.
-sig Comma separated list of signal number(s) during which any signal results in a dump of the process.
-e [.NET] Create dump when the process encounters an exception.
-f Filter (include) on the content of .NET exceptions (comma separated). Wildcards (*) are supported.
-fx Filter (exclude) on the content of -restrack call stacks. Wildcards (*) are supported.
-mc Custom core dump mask (in hex) indicating what memory should be included in the core dump. Please see 'man core' (/proc/[pid]/coredump_filter) for available options.
-pf Polling frequency.
-o Overwrite existing dump file.
-log Writes extended ProcDump tracing to the specified output stream (syslog or stdout).
-w Wait for the specified process to launch if it's not running.
-pgid Process ID specified refers to a process group ID.
Der -restrack-Schalter aktiviert die Ressourcenverfolgung, die die Überwachung und Meldung von Ressourcenzuweisungen ermöglicht, die zum Zeitpunkt der Erstellung des Core Dumps noch nicht freigegeben wurden. Die Ergebnisse werden in einer Datei mit der Erweiterung '.restrack' gespeichert. Derzeit werden die folgenden Funktionen zur Ressourcenzuweisung/-freigabe verfolgt:
Zuweisung:
Freigabe:
Die Mac-Version implementiert derzeit keine Ressourcenverfolgung.
Die folgenden Beispiele beziehen sich alle auf einen Prozess mit der PID == 1234
Das folgende erstellt sofort einen Core Dump.
sudo procdump 1234
Das folgende erstellt 3 Core Dumps im Abstand von 10 Sekunden.
sudo procdump -n 3 1234
Das folgende erstellt 3 Core Dumps im Abstand von 5 Sekunden.
sudo procdump -n 3 -s 5 1234
Das folgende erstellt jedes Mal einen Core Dump, wenn die CPU-Auslastung des Prozesses >= 65 % beträgt, bis zu 3 Mal, mit mindestens 10 Sekunden zwischen den einzelnen Dumps.
sudo procdump -c 65 -n 3 1234
Das folgende erstellt jedes Mal einen Core Dump, wenn die CPU-Auslastung des Prozesses >= 65 % beträgt, bis zu 3 Mal, mit mindestens 5 Sekunden zwischen den einzelnen Dumps.
sudo procdump -c 65 -n 3 -s 5 1234
Das folgende erstellt einen Core Dump, wenn die CPU-Auslastung außerhalb des Bereichs [10,65] liegt.
sudo procdump -cl 10 -c 65 1234
Das folgende erstellt einen Core Dump, wenn die CPU-Auslastung >= 65 % oder die Speichernutzung >= 100 MB beträgt.
sudo procdump -c 65 -m 100 1234
Das folgende erstellt einen Core Dump, wenn die Speichernutzung >= 100 MB beträgt, gefolgt von einem weiteren Dump, wenn die Speichernutzung >= 200 MB beträgt.
sudo procdump -m 100,200 1234
Das folgende erstellt jedes Mal einen Speicherleckbericht (keine Dumps), wenn der Benutzer 't' drückt:
sudo procdump -restrack 1234
Das folgende erstellt 3 Speicherleckberichte (keine Dumps) im Abstand von 5 Sekunden:
sudo procdump -n 3 -s 5 -restrack nodump 1234
Das folgende erstellt einen Core Dump und einen Speicherleckbericht, wenn die Speichernutzung >= 100 MB beträgt
sudo procdump -m 100 -restrack 1234
Das folgende erstellt einen Speicherleckbericht (keine Dumps), wenn die Speichernutzung >= 100 MB beträgt
sudo procdump -m 100 -restrack nodump 1234
Das folgende erstellt einen Core Dump und einen Speicherleckbericht, wenn die Speichernutzung >= 100 MB beträgt, indem jede 10. Speicherzuweisung abgetastet wird.
sudo procdump -m 100 -restrack -sr 10 1234
Das folgende erstellt einen Core Dump und einen Speicherleckbericht, wenn die Speichernutzung >= 100 MB beträgt, und schließt alle Aufrufstapel aus, die Frames mit der Zeichenfolge "cache" enthalten
sudo procdump -m 100 -restrack -fx *cache* 1234
Das folgende erstellt einen Core Dump, wenn die gesamte .NET-Speichernutzung >= 100 MB beträgt, gefolgt von einem weiteren Dump, wenn die Speichernutzung >= 200 MB beträgt.
sudo procdump -gcm 100,200 1234
Das folgende erstellt einen Core Dump, wenn die .NET-Speichernutzung für Generation 1 >= 1 MB beträgt, gefolgt von einem weiteren Dump, wenn die Speichernutzung >= 2 MB beträgt.
sudo procdump -gcm 1:1,2 1234
Das folgende erstellt einen Core Dump, wenn die .NET-Speichernutzung des Large Object Heap >= 100 MB beträgt, gefolgt von einem weiteren Dump, wenn die Speichernutzung >= 200 MB beträgt.
sudo procdump -gcm LOH:100,200 1234
Das folgende erstellt einen Core Dump am Anfang und Ende einer .NET-Garbage-Collection der Generation 1.
sudo procdump -gcgen 1
Das folgende erstellt sofort einen Core Dump im Verzeichnis /tmp.
sudo procdump 1234 /tmp
Das folgende erstellt einen Core Dump im aktuellen Verzeichnis mit dem Namen dump_0.1234. Wenn -n verwendet wird, werden die Dateien dump_0.1234, dump_1.1234 usw. genannt.
sudo procdump 1234 dump
Das folgende erstellt einen Core Dump, wenn ein SIGSEGV auftritt.
sudo procdump -sig 11 1234
Das folgende erstellt einen Core Dump, wenn ein SIGSEGV auftritt, wobei der Core Dump nur anonyme private Mappings enthält.
sudo procdump -mc 1 -sig 11 1234
Das folgende erstellt einen Core Dump, wenn die Ziel-.NET-Anwendung eine System.InvalidOperationException auslöst
sudo procdump -e -f System.InvalidOperationException 1234
Der Include-Filter unterstützt partielle und Wildcard-Übereinstimmungen, daher erstellt das folgende auch einen Core Dump für eine System.InvalidOperationException
sudo procdump -e -f InvalidOperation 1234
oder
sudo procdump -e -f "*Invali*Operation*" 1234
Alle Optionen können auch mit
-wverwendet werden, um auf einen beliebigen Prozess mit dem angegebenen Namen zu warten.
Das folgende wartet auf einen Prozess mit dem Namen my_application und erstellt sofort einen Core Dump, wenn er gefunden wird.
sudo procdump -w my_application
Wenn Sie daran interessiert sind, Probleme zu beheben und direkt zum Code beizutragen, lesen Sie bitte das Dokument How to Contribute, das Folgendes abdeckt:
Bitte beachten Sie auch unseren Verhaltenskodex.
Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten.
Lizenziert unter der MIT-Lizenz.
ProcDump für Linux: