Felügyelt verem nyomkövetéseinek vizsgálata (dotnet-stack)

Ez a cikk az ✔️ dotnet-stack 5.0.221401-es és újabb verziókra vonatkozik

Telepítés

Kétféleképpen tölthető le és telepíthető dotnet-stack:

Szinopszis

dotnet-stack [-h, --help] [--version] <command>

Leírás

Az dotnet-stack eszköz:

  • Platformfüggetlen .NET Core-eszköz.
  • Rögzíti és kinyomtatja a felügyelt veremeket a cél .NET-folyamat összes szálához.
  • EventPipe A .NET Core-futtatókörnyezet által biztosított nyomkövetést használja.

Beállítások

  • -h|--help

    Parancssori súgót jelenít meg.

  • --version

    Megjeleníti a dotnet-stack segédprogram verzióját.

Parancsok

Parancs Leírás
dotnet-stack jelentés A célfolyamat minden szálához kinyomtatja a verem nyomkövetését.
dotnet-stack ps Felsorolja azokat a dotnet-folyamatokat, amelyekből a nyomkövetések gyűjthetők.
dotnet-stack symbolicate Kérje le a sorszámot a metódus jogkivonatából és az IL-eltolásból egy stacktrace-ben.

dotnet-stack jelentés

A célfolyamat minden szálához kinyomtatja a verem nyomkövetését.

Szinopszis

dotnet-stack report -p|--process-id <pid>
                    -n|--name <process-name>
                    [-h|--help]

Beállítások

  • -n, --name <name>

    Annak a folyamatnak a neve, amelyből a vermet be kell jelenteni.

  • -p|--process-id <PID>

    A verem jelentésének folyamatazonosítója.

dotnet-stack ps

Felsorolja azokat a dotnet-folyamatokat, amelyekből a nyomkövetések gyűjthetők. dotnet-stack A 6.0.320703-as és újabb verziók is megjelenítik azokat a parancssori argumentumokat, amelyekkel az egyes folyamatok elindultak, ha elérhetők.

Szinopszis

dotnet-stack ps [-h|--help]

Példa

Tegyük fel, hogy a paranccsal dotnet run --configuration Releaseelindít egy hosszú ideig futó alkalmazást. Egy másik ablakban futtassa a dotnet-stack ps parancsot. A megjelenő kimenet a következő. Ha vannak ilyenek, a parancssori argumentumok a 6.0.320703-as és újabb verzióban dotnet-stack jelennek meg.

> 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

Kérje le a sorszámot a metódus jogkivonatából és az IL-eltolásból egy stacktrace-ben.

Szinopszis

dotnet-stack symbolicate <input-path> [-d|--search-dir] [-o|--output] [-c|--stdout] [-h|--help]

Beállítások

  • -d, --search-dir <directory1 directory2 ...>

    Több könyvtár elérési útja szerelvénylel és pdf-fájllal.

  • -o, --output <output-path>

    Kimenet közvetlenül egy fájlba.

  • -c, --stdout

    Kimenet közvetlenül egy konzolra.

Példa

> 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

Felügyelt halmok jelentése dotnet-stack használatával

Felügyelt verem jelentése a következő használatával dotnet-stack:

  • Kérje le a .NET Core-alkalmazás folyamatazonosítóját (PID) a halmok jelentéséhez.

    • Windows rendszeren használhatja például a Feladatkezelőt vagy a tasklist parancsot.
    • Linuxon például a ps parancs.
    • dotnet-stack ps
  • Futtassa az alábbi parancsot:

    dotnet-stack report --process-id <PID>
    

    Az előző parancs a következőhöz hasonló kimenetet hoz létre:

    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[])
    

    A kimenet a dotnet-stack következő formában jelenik meg:

    • A kimenet megjegyzései előtaggal vannak elnevezettek #.
    • Minden szálhoz tartozik egy fejléc, amely tartalmazza a natív szálazonosítót: Thread (<thread-id>):.
    • A veremkeretek az űrlapot Module!Methodkövetik.
    • A nem felügyelt kódra való áttérés a kimenetben látható módon [Native Frames] jelenik meg.
    # comment
    Thread (0x1234):
      module!Method
      module!Method
    
    Thread (0x5678):
      [Native Frames]
      Module!Method
      Module!Method
    

Feljegyzés

A folyamat leállítása hosszú időt (akár több percet) is igénybe vehet a nagyon nagy alkalmazások esetében. A futtatókörnyezetnek át kell küldenie a függvénynevek feloldásához rögzített összes felügyelt kód típus- és metódusadatait.

Következő lépések