Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel gilt für: ✔️ dotnet-stack
5.0.221401 und höhere Versionen
Installieren
Es gibt zwei Möglichkeiten, dotnet-stack
herunterzuladen und zu installieren:
Globales dotnet-Tool:
Verwenden Sie zum Installieren der neuesten Releaseversion des
dotnet-stack
den Befehl dotnet tool install:dotnet tool install --global dotnet-stack
Direkter Download:
Laden Sie die ausführbare Datei für das Tool herunter, die Ihrer Plattform entspricht:
Betriebssystem Plattform Fenster x86 | x64 | Arm | Arm-x64 Linux (Englisch) x64 | Arm | Arm64 | musl-x64 | musl-Arm64
Übersicht
dotnet-stack [-h, --help] [--version] <command>
Beschreibung
Das dotnet-stack
-Tool:
- Bei diesem Tool handelt es sich um ein plattformübergreifendes .NET Core-Tool.
- Erfasst und druckt die verwalteten Stapel für alle Threads im .NET-Zielprozess.
- Verwendet die
EventPipe
von der .NET Core-Laufzeit bereitgestellte Ablaufverfolgung.
Optionen
-h|--help
Zeigt die Hilfe für die Befehlszeile an.
--version
Zeigt die Version des Dienstprogramms „dotnet-dump“ an.
Befehle
Befehl | Beschreibung |
---|---|
dotnet-stack-Bericht | Gibt die Stapelüberwachung für jeden Thread im Zielprozess aus. |
dotnet-stack ps | Listet die dotnet-Prozesse auf, aus denen Stapelüberwachungen erfasst werden können. |
dotnet-stack symbolicate | Ruft die Zeilennummer aus dem Methodentoken und IL-Offset in einer Stapelüberwachung ab. |
dotnet-stack-Bericht
Gibt die Stapelüberwachung für jeden Thread im Zielprozess aus.
Übersicht
dotnet-stack report -p|--process-id <pid>
-n|--name <process-name>
[-h|--help]
Optionen
-n, --name <name>
Der Name des Prozesses, aus dem der Stapel gemeldet werden soll.
-p|--process-id <PID>
Die Prozess-ID, aus der der Stapel gemeldet werden soll.
dotnet-stack ps
Listet die dotnet-Prozesse auf, aus denen Stapelüberwachungen erfasst werden können.
Ab dotnet-stack
-Version 6.0.320703 werden auch die Befehlszeilenargumente angezeigt, mit denen jeder Prozess gestartet wurde, sofern verfügbar.
Übersicht
dotnet-stack ps [-h|--help]
Beispiel
Angenommen, Sie starten eine zeitintensive App mit dem Befehl dotnet run --configuration Release
. In einem anderen Fenster führen Sie den Befehl dotnet-stack ps
aus. Die Ausgabe sieht wie folgt aus. Sofern vorhanden, werden die Befehlszeilenargumente ab dotnet-stack
-Version 6.0.320703 angezeigt.
> dotnet-stack ps
21932 dotnet C:\Program Files\dotnet\dotnet.exe run --configuration Release
36656 dotnet C:\Program Files\dotnet\dotnet.exe
dotnet-stack symbolicate
Ruft die Zeilennummer aus dem Methodentoken und IL-Offset in einer Stapelüberwachung ab.
Übersicht
dotnet-stack symbolicate <input-path> [-d|--search-dir] [-o|--output] [-c|--stdout] [-h|--help]
Optionen
-d, --search-dir <directory1 directory2 ...>
Pfad mehrerer Verzeichnisse mit Assembly und PDB-Datei.
-o, --output <output-path>
Ausgabe direkt in eine Datei.
-c, --stdout
Ausgabe direkt in eine Konsole.
Beispiel
> cat stack.trace
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
at DotnetStackSymbolicate.App.MethodA() in DotnetStackSymbolicate.dll:token 0x6000002+0x6
at DotnetStackSymbolicate.App..ctor() in DotnetStackSymbolicate.dll:token 0x6000003+0x51
at DotnetStackSymbolicate.Program.OnCreate() in DotnetStackSymbolicate.Tizen.dll:token 0x6000001+0x8
onSigabrt called
>
> dotnet-stack symbolicate stack.trace --stdout
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
at DotnetStackSymbolicate.App.MethodA() in C:\DotnetStackSymbolicate\DotnetStackSymbolicate.cs:line 19
at DotnetStackSymbolicate.App..ctor() in C:\DotnetStackSymbolicate\DotnetStackSymbolicate.cs:line 38
at DotnetStackSymbolicate.Program.OnCreate() in C:\DotnetStackSymbolicate.Tizen\DotnetStackSymbolicate.Tizen.cs:line 12
onSigabrt called
Output: stack.trace.symbolicated
Mit dotnet-stack verwaltete Stapel melden
So melden Sie verwaltete Stapel dotnet-stack
:
Ermitteln Sie die Prozess-ID (PID) der .NET Core-Anwendung, um die verwalteten Stapel von dort zu melden.
- Unter Windows können Sie z. B. den Task-Manager oder den
tasklist
-Befehl verwenden. - Verwenden Sie unter Linux beispielsweise den
ps
-Befehl. - dotnet-stack ps
- Unter Windows können Sie z. B. den Task-Manager oder den
Führen Sie den folgenden Befehl aus:
dotnet-stack report --process-id <PID>
Der oben gezeigte Befehl generiert eine Ausgabe ähnlich der folgenden:
Thread (0x48839B): [Native Frames] System.Console!System.IO.StdInReader.ReadKey(bool&) System.Console!System.IO.SyncTextReader.ReadKey(bool&) System.Console!System.ConsolePal.ReadKey(bool) System.Console!System.Console.ReadKey() StackTracee!Tracee.Program.Main(class System.String[])
Die Ausgabe von
dotnet-stack
folgt der folgenden Form:- Kommentaren in der Ausgabe wird das Präfix
#
vorangestellt. - Jeder Thread verfügt über einen Header, der die native Thread-ID enthält:
Thread (<thread-id>):
. - Stapelrahmen folgen dem Format
Module!Method
. - Übergänge zu nicht verwaltetem Code werden wie folgt in der Ausgabe dargestellt
[Native Frames]
.
# comment Thread (0x1234): module!Method module!Method Thread (0x5678): [Native Frames] Module!Method Module!Method
- Kommentaren in der Ausgabe wird das Präfix
Hinweis
Das Beenden des Prozesses kann bei sehr großen Anwendungen möglicherweise lang (bis zu mehrere Minuten) dauern. Die Runtime muss die Typ- und Methodeninformationen für den gesamten verwalteten Code senden, der erfasst wurde, um Funktionsnamen aufzulösen.