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: ✔️ .NET Core 3.0 SDK e versioni successive
Raccogliere dump su Linux
Suggerimento
Per le domande frequenti sulla raccolta di dump, l'analisi e altre considerazioni, vedere Dump: domande frequenti.
I due modi consigliati per raccogliere i dump in Linux sono i seguenti:
-
dotnet-dumpStrumento CLI - Variabili di ambiente che raccolgono dump in caso di arresti anomali
Analizzare dump su Linux
Dopo aver raccolto un dump, è possibile analizzarlo usando lo strumento dotnet-dump con il comando dotnet-dump analyze. Questo passaggio di analisi deve essere eseguito in un computer con la stessa architettura e distribuzione Linux in cui è stato acquisito il dump.
Lo dotnet-dump strumento supporta la visualizzazione di informazioni sul codice .NET, ma non è utile per comprendere i problemi di codice per altri linguaggi come C e C++.
In alternativa, LLDB può essere usato per analizzare i dump in Linux, che consente l'analisi del codice gestito e nativo. LLDB usa l'estensione SOS per eseguire il debug del codice gestito. Lo strumento CLI dotnet-sos può essere usato per installare SOS, che include molti comandi utili per eseguire il debug del codice gestito. Per analizzare i dump di .NET Core, LLDB e SOS richiedono i file binari .NET Core seguenti dall'ambiente in cui è stato creato il dump:
- libmscordaccore.so
- libcoreclr.so
- dotnet (l'host usato per avviare l'app)
Nella maggior parte dei casi, questi file binari possono essere scaricati usando lo dotnet-symbol strumento . Se i file binari necessari non possono essere scaricati con dotnet-symbol (ad esempio, se è stata usata una versione privata di .NET Core compilata dall'origine), potrebbe essere necessario copiare i file elencati in precedenza dall'ambiente in cui è stato creato il dump. Se i file non si trovano accanto al file dump, è possibile usare il comando setclrpath <path> LLDB/SOS per impostare il percorso da cui devono essere caricati e setsymbolserver -directory <path> per impostare il percorso da cui cercare i file di simboli.
Una volta disponibili i file necessari, il dump può essere caricato in LLDB specificando l'host dotnet come eseguibile per il debug:
lldb --core <dump-file> <host-program>
Nel comando precedente è <dump-file> il percorso del dump da analizzare ed <host-program> è il programma nativo che ha avviato l'applicazione .NET Core. Questo è in genere il dotnet file binario a meno che l'app non sia autonoma, nel qual caso è il nome dell'applicazione senza l'estensione .dll .
Dopo l'avvio di LLDB, potrebbe essere necessario usare il setsymbolserver comando per puntare al percorso del simbolo corretto (setsymbolserver -ms per usare il server dei simboli di Microsoft o setsymbolserver -directory <path> per specificare un percorso locale). Per caricare i simboli nativi, eseguire loadsymbols. A questo punto, è possibile usare i comandi SOS per analizzare il dump.
Annotazioni
LLDB può essere installato con il comando sudo apt-get install lldb
Analizzare i file dump su Windows
I dump raccolti da un computer Linux possono anche essere analizzati in un computer Windows usando Visual Studio, Windbg o lo strumento dotnet-dump . Sia Visual Studio che Windbg possono analizzare codice nativo e gestito, mentre dotnet-dump analizza solo il codice gestito.
Annotazioni
Visual Studio versione 16.8 e successive consente di aprire e analizzare i dump di Linux generati in .NET Core 3.1.7 o versione successiva.
- Visual Studio : vedere la guida al debug del dump di Visual Studio.
- Windbg : è possibile eseguire il debug dei dump di Linux in windbg usando le stesse istruzioni che si userebbero per eseguire il debug di un dump in modalità utente di Windows. Usare la versione x64 di windbg per i dump raccolti da un ambiente Linux x64 o Arm64 e la versione x86 per i dump raccolti da un ambiente Linux x86.
- dotnet-dump : visualizzare il dump usando il comando dotnet-dump analyze . Usare la versione x64 di dotnet-dump per i dump raccolti da un ambiente Linux x64 o Arm64 e la versione x86 per i dump raccolti da un ambiente Linux x86.
Vedere anche
- dotnet-sos per altri dettagli sull'installazione dell'estensione SOS.
- dotnet-symbol per altri dettagli sull'installazione e l'uso dello strumento di download dei simboli.
- Repository di diagnostica .NET Core per altre informazioni sul debug, incluse le domande frequenti.
- Installazione di LLDB per istruzioni sull'installazione di LLDB in Linux o Mac.
- Esercitarsi e risolvere problemi su Linux per il tutorial sul debug dei crash dump in Linux