Domande frequenti - Ricerca delle funzionalità del debugger

Questa documentazione contiene domande frequenti sulle funzionalità di debug in Visual Studio. Esegue anche il mapping delle attività di debug o dei problemi alla funzionalità pertinente nel debugger di Visual Studio. Questi collegamenti riguardano attività o problemi come il debug di applicazioni multithreading, lo spostamento del codice, la perdita di memoria, l'ispezione delle variabili, l'uso di punti di interruzione, il debug del codice esterno e molti altri. Se è necessaria una panoramica delle funzionalità del debugger, vedere Prima di tutto esaminare il debugger .

Interruzione

  • Ricerca per categorie sospendere l'esecuzione del codice per esaminare una riga di codice che potrebbe contenere un bug?

    Impostare un punto di interruzione. Per altre informazioni, vedere Uso di punti di interruzione.

  • La variabile ha un valore imprevisto. In alternativa, si vuole controllare l'app quando raggiunge uno stato specifico?

    Provare un punto di interruzione condizionale per controllare dove e quando un punto di interruzione viene attivato usando la logica condizionale. Fare clic con il pulsante destro del mouse su un punto di interruzione per aggiungere condizioni. Impostare la condizione su true quando la variabile è uguale al valore imprevisto.

    Per altre informazioni, vedere Condizioni del punto di interruzione.

  • Ricerca per categorie informazioni di log nella finestra Output in condizioni configurabili senza modificare o arrestare il codice?

    I punti di traccia consentono di registrare le informazioni nella finestra Output in condizioni configurabili senza modificare o arrestare il codice.

  • Ricerca per categorie sapere quando cambia il valore della variabile?

    Per C++, impostare un punto di interruzione dei dati.

    Per le app che usano .NET Core 3, è anche possibile impostare un punto di interruzione dei dati.

    In caso contrario, solo per C# e F# è possibile tenere traccia di un ID oggetto con un punto di interruzione condizionale.

  • Ricerca per categorie'esecuzione di interruzioni solo se viene raggiunto un altro punto di interruzione?

    Impostare un punto di interruzione dipendente che interrompe l'esecuzione solo se viene raggiunto un altro punto di interruzione. Per altre informazioni, vedere Punto di interruzione dipendente.

  • È possibile raggiungere un punto di interruzione una sola volta?

    Impostare un punto di interruzione temporaneo che consente di interrompere il codice una sola volta. Per altre informazioni, vedere Punto di interruzione temporaneo.

  • È possibile sospendere il codice all'interno di un ciclo in una determinata iterazione?

    Impostare un punto di interruzione dipendente che interrompe l'esecuzione solo se viene raggiunto un altro punto di interruzione. Per altre informazioni, vedere Numero di passaggi.

  • Come è possibile sospendere il codice all'inizio di una funzione quando si conosce il nome della funzione ma non la posizione?

    A tale scopo, è possibile usare un punto di interruzione della funzione. Per altre informazioni, vedere Impostare i punti di interruzione della funzione.

  • Come è possibile sospendere il codice all'inizio di più funzioni con lo stesso nome?

    Quando si dispone di più funzioni con lo stesso nome (funzioni di overload o funzioni in progetti diversi), è possibile usare un punto di interruzione di funzione.

  • Gestire e tenere traccia dei punti di interruzione

    Usare la finestra Punti di interruzione . Per altre informazioni, vedere Gestire i punti di interruzione.

  • Sospendere il codice e il debug quando viene generata un'eccezione gestita o non gestita specifica

    Anche se l'helper eccezioni mostra dove si è verificato un errore, se si vuole sospendere ed eseguire il debug dell'errore specifico, è possibile indicare al debugger di interrompere quando viene generata un'eccezione.

  • Impostare un punto di interruzione dallo stack di chiamate

    Per sospendere ed eseguire il debug del codice durante l'analisi del flusso di esecuzione o la visualizzazione delle funzioni nelle finestre Stack di chiamate, vedere Impostare un punto di interruzione nella finestra Stack di chiamate.

  • Sospendere il codice in un'istruzione assembly specifica

    A tale scopo , impostare un punto di interruzione dalla finestra Disassembly.

Spostarsi nel codice

  • Come è possibile apprendere i comandi per scorrere il codice durante il debug?

    Per altre informazioni, vedere Esplorare il codice con il debugger.

  • È possibile eseguire il codice in una determinata riga ignorando i punti di interruzione senza rimuoverli o disabilitarli?

    È possibile usare "Forza esecuzione in cursore" per questi scenari. È possibile mantenere i punti di interruzione e il debugger li ignora finché non raggiunge la riga di codice con il cursore. Ignora anche qualsiasi condizione di interruzione delle eccezioni di prima probabilità che possono verificarsi. Per altre informazioni, vedere Esplorare il codice con il debugger.

  • Se la riga di codice ha chiamate a metodi diversi, è possibile eseguire un'istruzione in un metodo specifico?

    Fare clic con il pulsante destro del mouse sulla riga di codice per visualizzare un menu di scelta rapida che consente di selezionare "Esegui istruzione specifica". Verrà visualizzato un elenco di tutti i metodi che è possibile eseguire. È ora possibile selezionare il metodo di interesse.

Esaminare e visualizzare i dati

  • Come è possibile controllare il valore delle variabili durante l'esecuzione dell'app?

    Passare il puntatore del mouse sulle variabili usando i suggerimenti per i dati o esaminare le variabili nella finestra Auto e Variabili locali.

  • È possibile osservare il valore di modifica di una variabile specifica?

    Impostare un'espressione di controllo sulla variabile. Per altre informazioni, vedere Impostare un controllo sulle variabili.

  • Come è possibile visualizzare stringhe troppo lunghe per la finestra del debugger?

    Il visualizzatore di stringhe mostra stringhe troppo lunghe per una descrizione dati o una finestra del debugger. Può anche aiutare a identificare stringhe in formato non valido.
    Il visualizzatore di stringhe predefinito in Visual Studio include opzioni Text, XML, HTML e JSON.

  • Come è possibile visualizzare oggetti raccolta di grandi dimensioni?

    Il visualizzatore DataSet consente di visualizzare il contenuto di un oggetto DataSet, DataTable, DataView o DataViewManager. Il visualizzatore IEnumerable consente di visualizzare oggetti come matrici, elenco e così via. Per altre informazioni, vedere Visualizzatori tabulari.

Eseguire il debug di un'app già in esecuzione

  • Come è possibile eseguire il debug di app in esecuzione su computer locali o remoti, eseguire contemporaneamente il debug di più processi, eseguire il debug di app non create in Visual Studio o eseguire il debug di un'app non avviata da Visual Studio?

    Vedere Connettersi a un processo in esecuzione.

  • Come è possibile collegarsi ripetutamente alla stessa applicazione?

    È possibile usare Reattach to Process (MAIUSC+ALT+P) per consentire di avviare facilmente il debug dell'applicazione in un solo clic senza dover passare attraverso la finestra di dialogo Connetti a processo ogni volta. Vedere Ricollegamento a un processo

Eseguire il debug di applicazioni multithreading

  • Come è possibile eseguire il debug di un'applicazione multithread? Oppure, l'applicazione è in uno stato bloccato?

    Per altre informazioni sulla risoluzione dei problemi, vedere la finestra Stack paralleli

  • Come è possibile visualizzare l'ordine in cui vengono chiamate le funzioni?

    Vedere Come visualizzare lo stack di chiamate.

Analizzare la memoria

  • L'applicazione ha una perdita di memoria?

    Creare uno snapshot e aprirlo con lo strumento di memoria per risolvere altri problemi. Vedere Misurare l'utilizzo della memoria.

  • Come è possibile analizzare l'utilizzo della memoria per applicazioni native o gestite?

    Usare lo strumento di memoria di Visual Studio tramite debug in tempo reale, dump dell'heap o profiler delle prestazioni.
    Vedere Scegliere uno strumento di analisi della memoria.

  • Come è possibile analizzare l'utilizzo della memoria per applicazioni native o gestite senza collegare un debugger? Usare il profiler prestazioni di Visual Studio con lo strumento di utilizzo della memoria abilitato.
    Vedere Analizzare l'utilizzo della memoria.

  • È possibile confrontare l'utilizzo della memoria tra due punti nel tempo?

    Confrontare gli snapshot nello strumento di memoria o confrontare due dump dell'heap usando la funzionalità diff. Vedere Analizzare l'utilizzo della memoria.

Debug di codice esterno

  • È possibile visualizzare solo il codice utente durante il debug?

    Just My Code è una funzionalità di debug di Visual Studio che esegue automaticamente passaggi sulle chiamate a sistema, framework e altro codice non utente. Nella finestra Stack di chiamate Just My Code comprime queste chiamate in frame [Codice esterno]. Vedere Eseguire il debug solo del codice utente con Just My Code

  • Come è possibile visualizzare o eseguire il debug delle istruzioni di assembly non elaborate eseguite dal programma?

    Usare la finestra disassembly dal > disassembly di Windows > Disassembly. È possibile eseguire un'istruzione alla volta e persino impostare punti di interruzione su singole istruzioni di assembly.

  • È possibile visualizzare il codice sorgente per le librerie .NET?

    Abilitare i server di simboli Microsoft dai simboli delle opzioni > di debug > per scaricare i simboli e l'origine per le librerie .NET. Vedere Specificare il simbolo

  • Come è possibile caricare i PDB da un percorso o un server specifico o condiviso?

    Configurare i server di simboli dai simboli delle opzioni > di debug>. Vedere Specificare il simbolo

  • Come non è mai possibile caricare un PDB specifico? In alternativa, come posso caricarne sempre uno?

    Configurare gli elenchi di inclusione ed esclusione nei simboli delle opzioni > di debug>.
    Vedere Specificare il simbolo

Configurare il debug

  • Ricerca per categorie configurare le impostazioni del debugger?

    Per configurare le opzioni del debugger e le impostazioni del progetto del debugger, vedere Impostazioni e preparazione del debugger.

  • Come è possibile personalizzare le informazioni visualizzate nel debugger?

    È possibile visualizzare informazioni diverse dal tipo di oggetto come valore in diverse finestre del debugger. Per il codice C#, Visual Basic, F# e C++/CLI, usare l'attributo DebuggerDisplay . Per opzioni più avanzate, è anche possibile personalizzare l'interfaccia utente creando un visualizzatore personalizzato. Per C++ nativo, usare il framework NatVis.

Attività aggiuntive

  • È necessario salvare un dump?

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

  • Ricerca per categorie analizzare un file di dump?

    Aprire il dump scegliendo Apri > file in Visual Studio. Per avviare il debug, selezionare Debug con solo gestito, Debug con solo nativo, Debug con misto o Debug con memoria gestita. Vedere File di dump

  • È possibile modificare il codice durante una sessione di debug?

    Usare Modifica e continuazione. Per XAML, usa Ricaricamento rapido XAML.

  • Come è possibile eseguire il debug in computer remoti?

    Vedere Debug remoto.

  • Come è possibile risolvere i problemi di prestazioni?

    Vedere Prima di tutto gli strumenti di profilatura

  • Ricerca per categorie correggere un'eccezione?

    Vedere Correggere un'eccezione.