Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek se vztahuje na: ✔️ dotnet-stack verze 5.0.221401 a novější verze
Instalace
Existují dva způsoby, jak stáhnout a nainstalovat dotnet-stack:
dotnet global tool (globální nástroj dotnet):
Pokud chcete nainstalovat nejnovější verzi
dotnet-stackbalíčku NuGet, použijte příkaz dotnet tool install :dotnet tool install --global dotnet-stackPřímé stahování:
Stáhněte spustitelný soubor nástroje, který odpovídá vaší platformě:
Operační systém Platforma Windows x86 | x64 | Arm | arm-x64 Operační systém Linux x64 | Arm | Arm64 | musl-x64 | musl-Arm64
Synopse
dotnet-stack [-h, --help] [--version] <command>
Popis
Nástroj dotnet-stack :
- Je multiplatformní nástroj .NET Core.
- Zaznamená a vytiskne spravované zásobníky pro všechna vlákna v cílovém procesu .NET.
-
EventPipeVyužívá trasování poskytované modulem runtime .NET Core.
Možnosti
-h|--helpZobrazuje nápovědu k příkazovému řádku.
--versionZobrazí verzi nástroje dotnet-stack.
Příkazy
| Příkaz | Popis |
|---|---|
| dotnet-stack report | Vytiskne trasování zásobníku pro každé vlákno v cílovém procesu. |
| dotnet-stack ps | Obsahuje seznam procesů dotnet, ze které lze shromažďovat trasování zásobníku. |
| dotnet-stack symbolická | Získá číslo řádku z tokenu metody a posunu IL v trasování zásobníku. |
dotnet-stack report
Vytiskne trasování zásobníku pro každé vlákno v cílovém procesu.
Synopse
dotnet-stack report -p|--process-id <pid>
-n|--name <process-name>
[-h|--help]
Možnosti
-n, --name <name>Název procesu pro nahlášení zásobníku.
-p|--process-id <PID>ID procesu, ze které se má nahlásit zásobník.
dotnet-stack ps
Obsahuje seznam procesů dotnet, ze které lze shromažďovat trasování zásobníku.
dotnet-stack Verze 6.0.320703 a novější verze také zobrazují argumenty příkazového řádku, se kterými byly jednotlivé procesy spuštěny, pokud jsou k dispozici.
Synopse
dotnet-stack ps [-h|--help]
Příklad
Předpokládejme, že spustíte dlouhotrvající aplikaci pomocí příkazu dotnet run --configuration Release. V jiném okně spustíte dotnet-stack ps příkaz. Výstup, který uvidíte, je následující. Argumenty příkazového řádku( pokud existují) se zobrazují ve dotnet-stack verzi 6.0.320703 a novější.
> dotnet-stack ps
21932 dotnet C:\Program Files\dotnet\dotnet.exe run --configuration Release
36656 dotnet C:\Program Files\dotnet\dotnet.exe
dotnet-stack symbolická
Získá číslo řádku z tokenu metody a posunu IL v trasování zásobníku.
Synopse
dotnet-stack symbolicate <input-path> [-d|--search-dir] [-o|--output] [-c|--stdout] [-h|--help]
Možnosti
-d, --search-dir <directory1 directory2 ...>Cesta více adresářů se sestavením a pdb
-o, --output <output-path>Výstup přímo do souboru.
-c, --stdoutVýstup je přímo do konzoly.
Příklad
> 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
Spravované zásobníky sestav s využitím dotnet-stacku
Generování sestav spravovaných zásobníků pomocí dotnet-stack:
Získejte identifikátor procesu (PID) aplikace .NET Core pro zásobníky sestav.
- Ve Windows můžete například použít Správce úloh nebo
tasklistpříkaz. - Například v Linuxu příkaz
ps. - dotnet-stack ps
- Ve Windows můžete například použít Správce úloh nebo
Spusťte následující příkaz:
dotnet-stack report --process-id <PID>Předchozí příkaz generuje výstup podobný následujícímu:
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[])Výstup
dotnet-stacknásledující formy:- Komentáře ve výstupu mají předponu
#. - Každé vlákno má hlavičku, která obsahuje ID nativního vlákna:
Thread (<thread-id>):. - Snímky zásobníku se řídí formulářem
Module!Method. - Přechody na nespravovaný kód jsou reprezentovány jako
[Native Frames]ve výstupu.
# comment Thread (0x1234): module!Method module!Method Thread (0x5678): [Native Frames] Module!Method Module!Method- Komentáře ve výstupu mají předponu
Poznámka:
Zastavení procesu může trvat dlouhou dobu (až několik minut) pro velmi velké aplikace. Modul runtime musí odesílat informace o typu a metodě pro veškerý spravovaný kód zachycený za účelem překladu názvů funkcí.