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
:
dotnet globális eszköz:
A NuGet-csomag legújabb kiadási verziójának
dotnet-stack
telepítéséhez használja a dotnet eszköz telepítési parancsát:dotnet tool install --global dotnet-stack
Közvetlen letöltés:
Töltse le a platformnak megfelelő végrehajtható eszközt:
OS Platform Windows x86 x64 | Arm-x64 | | Linux x64 | Arm | Arm64 | musl-x64 | musl-Arm64
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 Release
elindí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
- Windows rendszeren használhatja például a Feladatkezelőt vagy a
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!Method
kö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
- A kimenet megjegyzései előtaggal vannak elnevezettek
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.