Beheerde stack-traceringen controleren (dotnet-stack)
Dit artikel is van toepassing op: ✔️ dotnet-stack
versie 5.0.221401 en nieuwere versies
Installeren
Er zijn twee manieren om te downloaden en installeren dotnet-stack
:
dotnet global tool:
Als u de nieuwste versie van het NuGet-pakket wilt installeren, gebruikt u de installatieopdracht van het
dotnet-stack
dotnet-hulpprogramma:dotnet tool install --global dotnet-stack
Directe download:
Download het uitvoerbare hulpprogramma dat overeenkomt met uw platform:
Besturingssysteem Platform Windows x86 x64 | Arm-x64 | | Linux x64 | Arm64 | | musl-x64 | musl-Arm64
Samenvatting
dotnet-stack [-h, --help] [--version] <command>
Beschrijving
Het dotnet-stack
hulpprogramma:
- Is een platformoverschrijdend .NET Core-hulpprogramma.
- Hiermee worden de beheerde stacks vastgelegd en afgedrukt voor alle threads in het .NET-doelproces.
EventPipe
Maakt gebruik van tracering die wordt geleverd door de .NET Core-runtime.
Opties
-h|--help
Toont opdrachtregelhulp.
--version
Geeft de versie van het hulpprogramma dotnet-stack weer.
Opdracht
Opdracht | Beschrijving |
---|---|
dotnet-stack-rapport | Hiermee wordt de stacktracering voor elke thread in het doelproces afgedrukt. |
dotnet-stack ps | Geeft een lijst weer van de dotnet-processen waaruit traceringen kunnen worden verzameld. |
dotnet-stack symbolisch | Haal het regelnummer op uit het methodetoken en IL-offset in een stacktrace. |
dotnet-stack-rapport
Hiermee wordt de stacktracering voor elke thread in het doelproces afgedrukt.
Samenvatting
dotnet-stack report -p|--process-id <pid>
-n|--name <process-name>
[-h|--help]
Opties
-n, --name <name>
De naam van het proces waaruit de stack moet worden rapporteren.
-p|--process-id <PID>
De proces-id waaruit de stack moet worden gerapport.
dotnet-stack ps
Geeft een lijst weer van de dotnet-processen waaruit traceringen kunnen worden verzameld.
dotnet-stack
versie 6.0.320703 en latere versies geven ook de opdrachtregelargumenten weer waarmee elk proces is gestart, indien beschikbaar.
Samenvatting
dotnet-stack ps [-h|--help]
Opmerking
Stel dat u een langlopende app start met behulp van de opdracht dotnet run --configuration Release
. In een ander venster voert u de dotnet-stack ps
opdracht uit. De uitvoer die u ziet, is als volgt. De opdrachtregelargumenten, indien aanwezig, worden weergegeven in dotnet-stack
versie 6.0.320703 en hoger.
> dotnet-stack ps
21932 dotnet C:\Program Files\dotnet\dotnet.exe run --configuration Release
36656 dotnet C:\Program Files\dotnet\dotnet.exe
dotnet-stack symbolisch
Haal het regelnummer op uit het methodetoken en IL-offset in een stacktrace.
Samenvatting
dotnet-stack symbolicate <input-path> [-d|--search-dir] [-o|--output] [-c|--stdout] [-h|--help]
Opties
-d, --search-dir <directory1 directory2 ...>
Pad naar meerdere mappen met assembly en pdb.
-o, --output <output-path>
Uitvoer rechtstreeks naar een bestand.
-c, --stdout
Uitvoer rechtstreeks naar een console.
Opmerking
> 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
Beheerde stacks rapporteren met dotnet-stack
Beheerde stacks rapporteren met behulp van dotnet-stack
:
Haal de proces-id (PID) van de .NET Core-toepassing op waaruit stacks moeten worden gerapporteerd.
- In Windows kunt u bijvoorbeeld Taakbeheer of de
tasklist
opdracht gebruiken. - In Linux bijvoorbeeld de
ps
opdracht. - dotnet-stack ps
- In Windows kunt u bijvoorbeeld Taakbeheer of de
Voer de volgende opdracht uit:
dotnet-stack report --process-id <PID>
Met de voorgaande opdracht wordt uitvoer gegenereerd die vergelijkbaar is met de volgende:
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[])
De uitvoer van
dotnet-stack
volgt de volgende vorm:- Opmerkingen in de uitvoer worden voorafgegaan door
#
. - Elke thread heeft een header die de systeemeigen thread-id bevat:
Thread (<thread-id>):
. - Stackframes volgen het formulier
Module!Method
. - Overgangen naar onbeheerde code worden weergegeven als
[Native Frames]
in de uitvoer.
# comment Thread (0x1234): module!Method module!Method Thread (0x5678): [Native Frames] Module!Method Module!Method
- Opmerkingen in de uitvoer worden voorafgegaan door
Notitie
Het stoppen van het proces kan lang duren (maximaal enkele minuten) voor zeer grote toepassingen. De runtime moet informatie over het type en de methode verzenden voor alle beheerde code die is vastgelegd om functienamen op te lossen.