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:

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
  • 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
    

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.

Volgende stappen