Training
Leertraject
Fouten opsporen in C#-consoletoepassingen (aan de slag met C#, deel 6) - Training
Fouten opsporen in C#-consoletoepassingen (aan de slag met C#, deel 6)
Deze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
Dit artikel is van toepassing op: ✔️ dotnet-stack
versie 5.0.221401 en nieuwere versies
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 |
dotnet-stack [-h, --help] [--version] <command>
Het dotnet-stack
hulpprogramma:
EventPipe
Maakt gebruik van tracering die wordt geleverd door de .NET Core-runtime.-h|--help
Toont opdrachtregelhulp.
--version
Geeft de versie van het hulpprogramma dotnet-stack weer.
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. |
Hiermee wordt de stacktracering voor elke thread in het doelproces afgedrukt.
dotnet-stack report -p|--process-id <pid>
-n|--name <process-name>
[-h|--help]
-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.
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.
dotnet-stack ps [-h|--help]
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
Haal het regelnummer op uit het methodetoken en IL-offset in een stacktrace.
dotnet-stack symbolicate <input-path> [-d|--search-dir] [-o|--output] [-c|--stdout] [-h|--help]
-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.
> 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 behulp van dotnet-stack
:
Haal de proces-id (PID) van de .NET Core-toepassing op waaruit stacks moeten worden gerapporteerd.
tasklist
opdracht gebruiken.ps
opdracht.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:
#
.Thread (<thread-id>):
.Module!Method
.[Native Frames]
in de uitvoer.# comment
Thread (0x1234):
module!Method
module!Method
Thread (0x5678):
[Native Frames]
Module!Method
Module!Method
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.
.NET-feedback
.NET is een open source project. Selecteer een koppeling om feedback te geven:
Training
Leertraject
Fouten opsporen in C#-consoletoepassingen (aan de slag met C#, deel 6) - Training
Fouten opsporen in C#-consoletoepassingen (aan de slag met C#, deel 6)