Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo si applica a: ✔️ dotnet-stack versione 5.0.221401 e versioni successive
Installare
Esistono due modi per scaricare e installare dotnet-stack:
Strumento globale dotnet:
Per installare la versione più recente del
dotnet-stackpacchetto NuGet, usare il comando dotnet tool install:dotnet tool install --global dotnet-stackDownload diretto:
Scaricare lo strumento eseguibile corrispondente alla piattaforma:
Sistema operativo Piattaforma Finestre x86 | x64 | Braccio | Arm-x64 Linux x64 | Braccio | Arm64 | musl-x64 | musl-Arm64
Riepilogo
dotnet-stack [-h, --help] [--version] <command>
Descrizione
Lo strumento dotnet-stack:
- è uno strumento .NET Core multipiattaforma.
- Acquisisce e stampa gli stack gestiti per tutti i thread nel processo .NET di destinazione.
- Usa la traccia
EventPipefornita dal runtime di .NET Core.
Opzioni
-h|--helpMostra la Guida della riga di comando.
--versionVisualizza la versione dell'utilità dotnet-stack.
Comandi
| Comando | Descrizione |
|---|---|
| report dotnet-stack | Stampa l'analisi dello stack per ogni thread nel processo di destinazione. |
| dotnet-stack ps | Elenca i processi dotnet da cui è possibile raccogliere le analisi dello stack. |
| dotnet-stack simbolica | Ottenere il numero di riga dal token del metodo e dall'offset IL in uno stacktrace. |
report dotnet-stack
Stampa l'analisi dello stack per ogni thread nel processo di destinazione.
Riepilogo
dotnet-stack report -p|--process-id <pid>
-n|--name <process-name>
[-h|--help]
Opzioni
-n, --name <name>Nome del processo da cui segnalare lo stack.
-p|--process-id <PID>ID del processo da cui segnalare lo stack.
dotnet-stack ps
Elenca i processi dotnet da cui è possibile raccogliere le analisi dello stack.
La versione 6.0.320703 di dotnet-stack e versioni successive visualizza anche gli argomenti della riga di comando con cui è stato avviato ogni processo, se disponibile.
Riepilogo
dotnet-stack ps [-h|--help]
Esempio
Si supponga di avviare un'app a esecuzione prolungata usando il comando dotnet run --configuration Release. In un'altra finestra si esegue il comando dotnet-stack ps. L'output visualizzato è il seguente. Gli argomenti della riga di comando, se presenti, vengono visualizzati nella versione 6.0.320703 di dotnet-stack e versioni successive.
> dotnet-stack ps
21932 dotnet C:\Program Files\dotnet\dotnet.exe run --configuration Release
36656 dotnet C:\Program Files\dotnet\dotnet.exe
dotnet-stack simbolica
Ottenere il numero di riga dal token del metodo e dall'offset IL in uno stacktrace.
Riepilogo
dotnet-stack symbolicate <input-path> [-d|--search-dir] [-o|--output] [-c|--stdout] [-h|--help]
Opzioni
-d, --search-dir <directory1 directory2 ...>Percorso di più directory con assembly e pdb.
-o, --output <output-path>Output diretto a un file.
-c, --stdoutOutput diretto a una console.
Esempio
> 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
Stack gestiti di report con dotnet-stack
Per segnalare gli stack gestiti tramite dotnet-stack:
Ottenere l'identificatore del processo (PID) dell'applicazione .NET Core da cui segnalare gli stack.
- Ad esempio, in Windows è possibile usare Gestione attività o il comando
tasklist. - In Linux, ad esempio, il comando
ps. - dotnet-stack ps
- Ad esempio, in Windows è possibile usare Gestione attività o il comando
Esegui questo comando:
dotnet-stack report --process-id <PID>Il comando precedente genera un output simile al seguente:
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[])L'output di
dotnet-stacksegue il formato seguente:- I commenti nell'output sono preceduti da
#. - Ogni thread ha un'intestazione che include l'ID thread nativo:
Thread (<thread-id>):. - Gli stack frame seguono il formato
Module!Method. - Le transizioni al codice non gestito vengono rappresentate come
[Native Frames]nell'output.
# comment Thread (0x1234): module!Method module!Method Thread (0x5678): [Native Frames] Module!Method Module!Method- I commenti nell'output sono preceduti da
Nota
L'arresto del processo può richiedere molto tempo (fino a diversi minuti) per le applicazioni molto grandi. Il runtime deve inviare le informazioni sul tipo e sul metodo per tutto il codice gestito che è stato acquisito al fine di risolvere i nomi delle funzioni.