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.
Leggere questo argomento per informazioni su alcuni suggerimenti e consigli per la produttività per il debugger di Visual Studio. Per un'analisi delle funzionalità di base del debugger, vedere Prima di tutto esaminare il debugger. In questo argomento vengono illustrate alcune aree non incluse nel tour delle funzionalità.
Combinazioni di tasti
Per un elenco dei tasti di scelta rapida più comuni correlati al debug, vedere la sezione Debug in Tasti di scelta rapida.
Aggiungere suggerimenti per i dati
Se si passa spesso il puntatore del mouse sui suggerimenti per i dati durante il debug, è consigliabile fissare il suggerimento per i dati della variabile per avere un accesso rapido. La variabile rimane bloccata anche dopo il riavvio. Per aggiungere la descrizione dati, fare clic sull'icona a forma di puntina mentre si passa il puntatore del mouse su di esso. È possibile aggiungere più variabili.
È anche possibile personalizzare i suggerimenti per i dati in diversi altri modi, ad esempio mantenere un suggerimento espanso (un suggerimento permanente) o rendere trasparente un suggerimento. Per ulteriori informazioni, vedi Visualizzare i valori nei DataTips nell'editor di codice.
Modificare il codice e continuare il debug (C#, VB, C++)
Nella maggior parte dei linguaggi supportati da Visual Studio è possibile modificare il codice durante una sessione di debug e continuare il debug. Per usare questa funzionalità, fare clic sul codice con il cursore mentre è in pausa nel debugger, apportare modifiche e premere F5, F10o F11 per continuare il debug.
Per altre informazioni sull'uso della funzionalità e sulle limitazioni delle funzionalità, vedere Modifica e continuazione.
Modificare il codice XAML e continuare il debug
Per modificare il codice XAML durante una sessione di debug, vedi Scrivere ed eseguire il debug di codice XAML con Hot Reload di XAML.
Problemi di debug difficili da riprodurre
Se è difficile o dispendioso in termini di tempo ricreare uno stato specifico nell'app, valutare se l'uso di un punto di interruzione condizionale può essere utile. Puoi usare punti di interruzione condizionali e punti di interruzione dei filtri per evitare l'interruzione nel codice dell'app fino a quando l'app non entra nello stato desiderato( ad esempio uno stato in cui una variabile archivia dati non valido). È possibile impostare condizioni usando espressioni, filtri, hit counts e così via.
Per creare un punto di interruzione condizionale
Fare clic con il pulsante destro del mouse su un'icona del punto di interruzione (la sfera rossa) e scegliere Condizioni.
Nella finestra Impostazioni punto di interruzione digitare un'espressione.
Se si è interessati a un altro tipo di condizione, selezionare Filtro anziché Espressione condizionale nella finestra di dialogo Impostazioni punto di interruzione e quindi seguire i suggerimenti per i filtri.
Configurare i dati da visualizzare nel debugger
Per C#, Visual Basic e C++ (solo codice C++/CLI), è possibile indicare al debugger quali informazioni mostrare usando l'attributo DebuggerDisplay . Per il codice C++, è possibile eseguire le stesse operazioni usando le visualizzazioni Natvis.
Collegarsi ripetutamente alla stessa applicazione
Quando si usa la funzionalità di collegamento a processo , è possibile ricollegare rapidamente a un processo a cui è stato precedentemente collegato scegliendo Debug>Ricollegamento al processo (MAIUSC+ALT+P). Quando si sceglie questo comando, il debugger tenterà immediatamente di connettersi all'ultimo processo a cui si è collegato provando prima a trovare la corrispondenza con l'ID del processo precedente e, in caso di errore, corrispondendo al nome del processo precedente. Se non vengono trovate corrispondenze o se più processi hanno lo stesso nome, verrà aperta la finestra di dialogo Connetti a processo in modo da poter selezionare il processo corretto.
Tenere traccia di un oggetto out-of-scope (C#, Visual Basic)
È facile visualizzare le variabili usando finestre del debugger come la finestra Osserva. Tuttavia, quando una variabile esce dall'ambito nella finestra Watch, potrebbe apparire in grigio. In alcuni scenari dell'app, il valore di una variabile può cambiare anche quando la variabile è fuori dall'ambito e può essere utile osservarla attentamente (ad esempio, una variabile potrebbe essere sottoposta a garbage collection). È possibile monitorare la variabile creando un ID oggetto nella finestra Osservazione.
Per creare un ID oggetto
Impostare un punto di interruzione vicino a una variabile da tenere traccia.
Avviare il debugger (F5) e arrestarlo in corrispondenza del punto di interruzione.
Trovare la variabile nella finestra Variabili locali (Debug > variabili locali di Windows>), fare clic con il pulsante destro del mouse sulla variabile e scegliere Crea ID oggetto.
Nella finestra $ verrà visualizzato il simbolo Variabili locali . Questa variabile è l'ID oggetto.
Fare clic con il pulsante destro del mouse sulla variabile ID oggetto e scegliere Aggiungi controllo.
Per altre informazioni, vedere Creare un ID oggetto.
Visualizzare i valori restituiti per le funzioni
Per visualizzare i valori restituiti per le funzioni, esaminare le funzioni che appaiono nella finestra Auto mentre si esegue il debug del codice. Per visualizzare il valore restituito di una funzione, assicurarsi che la funzione di cui ti interessa vedere il risultato sia già stata eseguita (premere F10 una volta se sei attualmente in pausa sulla chiamata di funzione). Se la finestra è chiusa, usare Debug > di Windows > Auto per aprire la finestra Auto.
Inoltre, è possibile immettere le funzioni nella finestra Immediata per visualizzare i valori restituiti. (Aprirlo usando Debug > Windows > Immediate.)
È anche possibile usare pseudovariabili nella finestra Osserva e Immediata, ad esempio $ReturnValue
.
Esaminare le stringhe in un visualizzatore
Quando si utilizzano stringhe, può essere utile visualizzare l'intera stringa formattata. Per visualizzare una stringa di testo normale, XML, HTML o JSON, fare clic sull'icona della lente di ingrandimento mentre si passa il puntatore del mouse su una variabile contenente un valore stringa.
Un visualizzatore di stringhe può aiutare a determinare se una stringa è in formato non corretto, a seconda del tipo di stringa. Ad esempio, un campo Valore vuoto indica che la stringa non viene riconosciuta dal tipo di visualizzatore. Per altre informazioni, vedere Finestra di dialogo Visualizzatore di stringhe.
Per alcuni altri tipi, ad esempio DataSet e Oggetti DataTable visualizzati nelle finestre del debugger, è anche possibile aprire un visualizzatore predefinito.
Analizzare l'utilizzo della memoria
È possibile acquisire e confrontare snapshot dell'heap, ottimizzare l'utilizzo della memoria e trovare una perdita di memoria usando gli strumenti di utilizzo della memoria. Per altre informazioni, vedere Scegliere uno strumento di analisi della memoria.
Creare un file di dump
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 un'istantanea della memoria dell'app a quel punto. I dump vengono usati principalmente per eseguire il debug dei problemi dai computer a cui gli sviluppatori non hanno accesso.
Se è necessario salvare un file di dump, selezionare Debug > Salva dump con nome.
Per analizzare un file dump, scegliere Apri file > in Visual Studio. Per avviare il debug usando il file di dump, selezionare Debug con solo gestito, Debug con solo nativo, Debug con misto o Debug con memoria gestita.
Per altre informazioni, vedere File di dump.
Suddividere il codice nelle eccezioni gestite
Il debugger si interrompe nel tuo codice in caso di eccezioni non gestite. Tuttavia, le eccezioni gestite (ad esempio le eccezioni che si verificano all'interno di un try/catch
blocco) possono anche essere una fonte di bug e può essere utile analizzare quando si verificano. È possibile configurare il debugger per suddividere il codice anche per le eccezioni gestite configurando le opzioni nella finestra di dialogo Impostazioni eccezioni . Aprire questa finestra di dialogo scegliendo Debug > Windows> Impostazioni eccezioni.
La finestra di dialogo Impostazioni eccezioni consente di indicare al debugger di suddividere il codice in eccezioni specifiche. Nella figura seguente, il debugger si interrompe nel codice ogni volta che si verifica un System.NullReferenceException
. Per altre informazioni, vedere Gestione delle eccezioni.
Modificare il flusso di esecuzione
Con il debugger sospeso su una riga di codice, usare il mouse per afferrare il puntatore freccia gialla a sinistra. Spostare il puntatore a freccia gialla in un punto diverso nel percorso di esecuzione del codice. Usare quindi F5 o un comando step per continuare a eseguire l'app.
Modificando il flusso di esecuzione, è possibile eseguire operazioni come testare percorsi di esecuzione di codice diversi o rieseguire il codice senza riavviare il debugger. Per ulteriori informazioni, vedere Sposta il puntatore di esecuzione.
Avvertimento
Spesso è necessario prestare attenzione a questa funzionalità e viene visualizzato un avviso nella descrizione comando. Potrebbero essere visualizzati anche altri avvisi. Lo spostamento del puntatore non può ripristinare lo stato precedente dell'applicazione.
Eseguire il debug di deadlock e condizioni di contesa
Se è necessario eseguire il debug dei tipi di problemi comuni alle app multithreading, spesso consente di visualizzare la posizione dei thread durante il debug. È possibile farlo facilmente usando il pulsante Mostra thread nella fonte.
Per visualizzare i thread nel codice sorgente:
Durante il debug, fare clic sul pulsante Mostra thread nell'origine
nella barra degli strumenti Debug.
Guarda la canalina sul lato sinistro della finestra. In questa riga, vedrai un'icona di marcatore di thread,
, che assomiglia a due fili di tessuto. L'indicatore di thread segnala che un thread è arrestato in questo punto.
Si noti che un indicatore di thread può essere parzialmente nascosto da un punto di interruzione.
Posizionare il puntatore sopra l'indicatore del thread. Viene visualizzata una descrizione dati. Il DataTip ti fornisce il nome e il numero ID del thread per ogni thread arrestato.
È anche possibile visualizzare la posizione dei thread nella finestra Stack paralleli.
Acquisire familiarità con il modo in cui il debugger si collega all'app (C#, C++, Visual Basic, F#)
Per connettersi all'app in esecuzione, il debugger carica i file di simboli (con estensione pdb) generati per la stessa compilazione dell'app che si sta tentando di eseguire il debug. In alcuni scenari, una certa conoscenza dei file di simboli può essere utile. È possibile esaminare il modo in cui Visual Studio carica i file di simboli usando la finestra Moduli .
Aprire la finestra Moduli durante il debug selezionando Debug > moduli Windows>. La finestra Moduli può indicare i moduli che il debugger considera come codice utente o Codice personale e lo stato di caricamento dei simboli per il modulo. Nella maggior parte degli scenari, il debugger trova automaticamente i file di simboli per il codice utente, ma se si vuole eseguire il debug di codice .NET, il codice di sistema o il codice della libreria di terze parti, sono necessari passaggi aggiuntivi per ottenere i file di simboli corretti.
È possibile caricare le informazioni sui simboli direttamente dalla finestra Moduli facendo clic con il pulsante destro del mouse e scegliendo Carica simboli.
In alcuni casi, gli sviluppatori di app spediscono app senza i file di simboli corrispondenti (per ridurre il footprint), ma mantengono una copia dei file di simboli corrispondenti per la compilazione in modo che possano eseguire il debug di una versione rilasciata in un secondo momento.
Per informazioni su come il debugger classifica il codice come codice utente, vedere Just My Code. Per altre informazioni sui file di simboli, vedere Specificare i file di simboli (con estensione pdb) e di origine nel debugger di Visual Studio.
Ulteriori informazioni
Per ulteriori suggerimenti e trucchi e informazioni più dettagliate, vedere questi post di blog: