Condividi tramite


File di dump nel debugger di Visual Studio

Un file di dump è uno snapshot che mostra il processo in esecuzione e i moduli caricati per un'app in un momento specifico. Un dump con informazioni sull'heap include anche uno snapshot della memoria dell'app a quel punto.

L'apertura di un file di dump con un heap in Visual Studio è simile all'arresto in un punto di interruzione in una sessione di debug. Anche se non è possibile continuare l'esecuzione, è possibile esaminare gli stack, i thread e i valori delle variabili dell'app al momento del dump.

I dump vengono usati principalmente per eseguire il debug dei problemi dai computer a cui gli sviluppatori non hanno accesso. È possibile usare un file di dump dal computer di un cliente quando non è possibile riprodurre un programma di arresto anomalo o non rispondente nel proprio computer. I tester creano anche dump per salvare i dati del programma di arresto anomalo o non risponde da usare per altri test.

Il debugger di Visual Studio può salvare i file dump per il codice gestito o nativo. Può eseguire il debug dei file di dump creati da Visual Studio o da altre app che salvano i file nel formato minidump .

Requisiti e limitazioni

  • Per eseguire il debug dei file di dump da computer a 64 bit, Visual Studio deve essere in esecuzione in un computer a 64 bit.
  • Visual Studio può eseguire il debug dei file di dump delle app gestite dal sistema operativo Linux.
  • Visual Studio può eseguire il debug dei file dump delle app native di dispositivi ARM. Può anche eseguire il debug dei dump delle app gestite dai dispositivi ARM, ma solo nel debugger nativo.
  • Per eseguire il debug dei file di dump in modalità kernel o usare l'estensione di debug SOS.dll in Visual Studio, scaricare gli strumenti di debug per Windows in Windows Driver Kit (WDK).
  • Visual Studio non è in grado di eseguire il debug dei file di dump salvati nel formato di dump in modalità utente precedente e completa. Un dump in modalità utente completo non corrisponde a un dump con heap.
  • Il debug di file dump del codice ottimizzato può generare confusione. Ad esempio, l'incorporamento di funzioni del compilatore può comportare stack di chiamate imprevisti e altre ottimizzazioni potrebbero modificare la durata delle variabili.

Eseguire il dump dei file con o senza heap

I file di dump possono avere o meno informazioni sull'heap.

  • I file di dump con heap contengono uno snapshot della memoria dell'app, inclusi i valori delle variabili, al momento del dump. Visual Studio salva anche i file binari dei moduli nativi caricati in un file di dump con un heap, in modo da semplificare il debug. Visual Studio può caricare i simboli da un file dump con un heap, anche se non riesce a trovare un file binario dell'app.

  • I file di dump senza heap sono molto più piccoli dei dump con heap, ma il debugger deve caricare i file binari dell'app per trovare le informazioni sui simboli. I file binari caricati devono corrispondere esattamente a quelli in esecuzione durante la creazione del dump. I file di dump senza heap salvano solo i valori delle variabili dello stack.

Creare un file dump

Durante il debug di un processo in Visual Studio, è possibile salvare un file di dump quando il debugger è stato arrestato in corrispondenza di un'eccezione o di un punto di interruzione.

Con il debug JIT abilitato, è possibile collegare il debugger di Visual Studio a un processo arrestato in modo anomalo all'esterno di Visual Studio e quindi salvare un file di dump dal debugger. Vedere Connettersi ai processi in esecuzione.

Per salvare un file dump:

  1. Durante il debug viene arrestato in corrispondenza di un errore o di un punto di interruzione, selezionare Debug>Salva dump con nome.

  2. Nella finestra di dialogo Salva dump con nome selezionare Minidump o Minidump con Heap (impostazione predefinita).

  3. Passare a un percorso e selezionare un nome per il file di dump e quindi selezionare Salva.

Nota

È possibile creare file di dump con qualsiasi programma che supporti il formato minidump di Windows. Ad esempio, tramite l'utilità della riga di comando Procdump di Windows Sysinternals è possibile creare file dump dell'arresto anomalo del processo basati su trigger o su richiesta. Per informazioni sull'uso di altri strumenti per creare file di dump, vedere Requisiti e limitazioni .

Aprire un file di dump

  1. In Visual Studio selezionare File>apri>file.

  2. Nella finestra di dialogo Apri file individuare e selezionare il file di dump. Il file dump in genere ha l'estensione dmp. Seleziona OK.

    La finestra Riepilogo file minidump mostra le informazioni di riepilogo e modulo per il file di dump e le azioni che è possibile eseguire.

    Screenshot che mostra la pagina di riepilogo minidump.

    Screenshot che mostra la pagina di riepilogo minidump.

  3. In Azioni:

    • Per impostare i percorsi di caricamento dei simboli, selezionare Imposta percorsi dei simboli.
    • Per avviare il debug, selezionare Debug con solo gestito, Debug con misto, Debug con solo nativo o Debug di memoria gestita. Per analizzare la memoria gestita, vedere Report sui tipi gestiti.
    • Per ottenere l'analisi della memoria nel dump, selezionare Esegui analisi diagnostica e vedere Eseguire il debug di un dump della memoria gestita con analizzatori di diagnostica .NET.

Trovare .exe, pdb e file di origine

Per usare le funzionalità di debug complete in un file di dump, Visual Studio deve:

  • Il .exe file per cui è stato creato il dump e altri file binari (ad esempio DLL) usati dal processo di dump.
  • File di simboli (con estensione pdb) per il file con estensione exe e altri binari.
  • I file .exe e pdb che corrispondono esattamente alla versione e alla compilazione dei file al momento della creazione del dump.
  • File di origine per i moduli pertinenti. È possibile usare il disassembly dei moduli se non è possibile trovare i file di origine.

Se il dump contiene dati heap, Visual Studio può gestire i file binari mancanti per alcuni moduli, ma deve avere file binari per un numero sufficiente di moduli per generare stack di chiamate validi.

Percorsi di ricerca per i file di .exe

Visual Studio cerca automaticamente i file .exe che non sono inclusi nel file dump:

  1. Cartella contenente il file di dump.
  2. Il percorso del modulo specificato dal file di dump, ovvero il percorso del modulo nel computer che ha raccolto il dump.
  3. Percorsi dei simboli specificati in Strumenti (o Debug) >Opzioni>Debug>simboli. È anche possibile aprire la pagina Simboli dal pannello Azioni della finestra Riepilogo file di dump. In questa pagina è possibile aggiungere altre posizioni per la ricerca.

Utilizzare le pagine No Binary, No Symbols o No Source Found

Se Visual Studio non riesce a trovare i file necessari per eseguire il debug di un modulo nel dump, visualizza una pagina Nessuna trovata binaria, Nessun simbolo trovato o Nessuna origine trovata . Queste pagine forniscono informazioni dettagliate sulla causa del problema e forniscono collegamenti di azione che consentono di individuare i file. Vedere Specificare file di simboli (con estensione pdb) e di origine.