Condividi tramite


Introduzione ai punti di interruzione nel debugger di Visual Studio

I punti di interruzione sono una delle tecniche di debug più importanti nella casella degli strumenti dello sviluppatore. È possibile impostare punti di interruzione ovunque si voglia sospendere l'esecuzione del debugger. Ad esempio, è possibile visualizzare lo stato delle variabili di codice o esaminare lo stack di chiamate in corrispondenza di un determinato punto di interruzione.

Impostare punti di interruzione nel codice sorgente

È possibile impostare un punto di interruzione in qualsiasi riga di codice eseguibile. Ad esempio, esaminare questo semplice codice C# che crea un ciclo semplice.

int testInt = 3;

for (int i = 0; i < 10; i++)
{
    testInt += i;
}

È possibile impostare un punto di interruzione nella riga di codice con l'assegnazione di variabili (int testInt = 3), il ciclo for o qualsiasi codice all'interno del ciclo for. Non è possibile impostare un punto di interruzione per le firme dei metodi, le dichiarazioni per uno spazio dei nomi o una classe o dichiarazioni di variabili se non esiste alcuna assegnazione e nessun getter/setter.

Per impostare un punto di interruzione nel codice sorgente:

  • Fare clic sul margine all'estrema sinistra accanto a una riga di codice. Puoi anche selezionare la riga e premere F9, selezionare Debug>Attiva/Disattiva punto di interruzione, oppure fare clic con il destro e selezionare Punto di interruzione>Inserisci punto di interruzione. Il punto di interruzione viene visualizzato come punto rosso nel margine sinistro.

Per la maggior parte dei linguaggi (incluso C#), Visual Studio evidenzia automaticamente i punti di interruzione e le righe di esecuzione correnti. Per alcuni linguaggi, ad esempio C++, che non è evidenziato per impostazione predefinita, è possibile attivare l'evidenziazione dei punti di interruzione e delle righe correnti selezionando Tools (o Debug) >Opzioni>Debug>Evidenziare l'intera riga di origine per i punti di interruzione e l'istruzione corrente (solo C++).

Impostare un punto di interruzione

Impostare un punto di interruzione

Per eseguire il debug, premere F5 oppure selezionare Debug>Avvia debug.

Quando si esegue il debug, l'esecuzione viene sospesa in corrispondenza del punto di interruzione, prima dell'esecuzione del codice in tale riga. Il simbolo del punto di interruzione mostra una freccia gialla.

Nel punto di interruzione nell'esempio seguente il valore di testInt è ancora 3. Il valore non è stato quindi modificato dopo l'inizializzazione della variabile (impostato su un valore 3) perché l'istruzione in giallo non è ancora stata eseguita.

l'esecuzione del punto di interruzione è stata arrestata

Nel punto di interruzione nell'esempio seguente il valore di testInt è ancora 1. Il valore non è stato quindi modificato dopo l'inizializzazione della variabile (impostato su un valore 1) perché l'istruzione in giallo non è ancora stata eseguita.

l'esecuzione del punto di interruzione è stata arrestata

Quando il debugger si arresta in corrispondenza del punto di interruzione, è possibile esaminare lo stato corrente dell'app, inclusi i valori delle variabili e lo stack di chiamate .

Nell'illustrazione seguente, ad esempio, è possibile visualizzare il valore di testInt in un suggerimento dati e nella finestra variabili locali.

Screenshot della visualizzazione dello stato dell'app

Ecco alcune istruzioni generali per l'uso dei punti di interruzione.

  • Il punto di interruzione è un interruttore. È possibile fare clic su di esso, premere F9oppure usare Debug>Attiva/Disattiva punto di interruzione per eliminarlo o reinserirlo.

  • Per disabilitare un punto di interruzione senza eliminarlo, passare il puntatore del mouse o fare clic con il pulsante destro del mouse su di esso e selezionare Disabilita punto di interruzione. I punti di interruzione disabilitati vengono visualizzati come punti vuoti nel margine sinistro o nella finestra Punti di interruzione. Per riabilitare un punto di interruzione, passare il puntatore del mouse o fare clic con il pulsante destro del mouse e selezionare Abilita punto di interruzione.

  • Impostare condizioni e azioni, aggiungere e modificare etichette oppure esportare un punto di interruzione facendo clic con il pulsante destro del mouse su di esso e selezionando il comando appropriato oppure passando il puntatore del mouse su di esso e selezionando l'icona Impostazioni.

Tipi di punti di interruzione

Visual Studio supporta diversi tipi di punti di interruzione per supportare diversi scenari di debug, ad esempio punti di interruzione condizionali attivati solo in base ai criteri specificati. Per altre informazioni, vedere Usare il tipo corretto di punto di interruzione.

Gestire i punti di interruzione nella finestra Punti di interruzione

È possibile usare la finestra punti di interruzione per visualizzare e gestire tutti i punti di interruzione nella soluzione. Questa posizione centralizzata è particolarmente utile in una soluzione di grandi dimensioni o per scenari di debug complessi in cui i punti di interruzione sono critici.

Nella finestra Breakpoints è possibile cercare, ordinare, filtrare, abilitare/disabilitare o eliminare breakpoints. È anche possibile impostare condizioni e azioni oppure aggiungere una nuova funzione o un punto di interruzione dei dati.

Per aprire la finestra punti di interruzione, selezionare Debug>punti di interruzione di Windows>oppure premere CTRL+ALT+B.

finestra Punti di interruzione

finestra Punti di interruzione

Per scegliere le colonne da visualizzare nella finestra punti di interruzione , selezionare Mostra colonne. Selezionare un'intestazione di colonna per ordinare l'elenco dei punti di interruzione in base a tale colonna.

Etichette dei punti di interruzione

È possibile usare le etichette per ordinare e filtrare l'elenco dei punti di interruzione nella finestra punti di interruzione.

  1. Per aggiungere un'etichetta a un punto di interruzione, fare clic con il pulsante destro del mouse sul punto di interruzione nel codice sorgente o nella finestra punti di interruzione e quindi selezionare Modifica etichette. Aggiungere una nuova etichetta o sceglierne una esistente e quindi selezionare OK.
  2. Ordinare l'elenco dei punti di interruzione nella finestra Punti di Interruzione selezionando le Etichette, Condizionio altre intestazioni di colonna. È possibile selezionare le colonne da visualizzare selezionando Mostra colonne sulla barra degli strumenti.

Gruppi di punti di interruzione

Per scenari di debug complessi, è possibile creare gruppi di punti di interruzione per organizzare i punti di interruzione. In questo modo è possibile abilitare e disabilitare rapidamente i raggruppamenti logici dei punti di interruzione, in base allo scenario corrente di cui si sta tentando di eseguire il debug.

È possibile creare punti di interruzione nella finestra punti di interruzione selezionando Nuovo gruppo di punti di interruzione >e specificando un nome per il gruppo. Per aggiungere un punto di interruzione a un gruppo, fare clic con il pulsante destro del mouse sul punto di interruzione e scegliere Aggiungi al gruppo di punti di interruzione><nome del gruppo>. In alternativa, trascina e rilascia i punti di interruzione nel gruppo desiderato.

Screenshot dei gruppi di punti di interruzione.

Per impostare un gruppo di punti di interruzione predefinito, fare clic con il pulsante destro del mouse su un gruppo e selezionare Imposta come gruppo di punti di interruzione predefinito. Quando si imposta un gruppo di punti di interruzione predefinito, i punti di interruzione appena creati vengono aggiunti automaticamente al gruppo.

Esportare e importare punti di interruzione

Per salvare o condividere lo stato e la posizione dei punti di interruzione, è possibile esportarli o importarli.

A partire da Visual Studio 2022 versione 17.12 Preview 3, i gruppi di punti di interruzione sono inclusi anche nei punti di interruzione esportati e importati.

  • Per esportare un singolo punto di interruzione in un file XML, fare clic con il pulsante destro del mouse sul punto di interruzione nel codice sorgente o finestra Punti di interruzione e selezionare Esporta o Esporta selezionato. Selezionare un percorso di esportazione e quindi selezionare Salva. Il percorso predefinito è la cartella della soluzione.
  • Per esportare diversi punti di interruzione, nella finestra Punti di interruzione selezionare le caselle accanto ai punti desiderati oppure immettere i criteri di ricerca nel campo Cerca. Selezionare l'icona Esporta tutti i punti di interruzione corrispondenti ai criteri di ricerca correnti e salvare il file.
  • Per esportare tutti i punti di interruzione, deselezionare tutte le caselle e lasciare vuoto il campo Cerca. Selezionare l'icona Esporta tutti i punti di interruzione corrispondenti ai criteri di ricerca correnti e salvare il file.
  • Per importare punti di interruzione, nella finestra punti di interruzione selezionare l'icona Importa punti di interruzione da un file, passare al percorso del file XML e selezionare Apri.

Impostare punti di interruzione dalle finestre del debugger

È anche possibile impostare punti di interruzione dalle finestre del debugger Stack di chiamate e disassembly disassembly.

Impostare un punto di interruzione nella finestra Stack di chiamate

Per interrompere l'istruzione o la riga a cui torna una funzione chiamante, è possibile impostare un punto di interruzione nella finestra stack di chiamate.

Per impostare un punto di interruzione nella finestra Stack di chiamate:

  1. Per aprire la finestra stack di chiamate, è necessario essere in pausa durante il debug. Selezionare Debug>Stack di chiamate di Windows>oppure premere CTRL+ALT+C.

  2. Nella finestra di chiamate stack, fare clic con il pulsante destro del mouse sulla funzione chiamante e selezionare Inserisci punto di interruzione>oppure premere F9.

    Accanto al nome della chiamata di funzione nel margine sinistro dello stack di chiamate viene visualizzato un simbolo di punto di interruzione.

Il breakpoint dello stack di chiamate viene visualizzato nella finestra Breakpoints in forma di indirizzo, con una locazione di memoria che corrisponde all'istruzione eseguibile successiva nella funzione.

Il debugger si interrompe in corrispondenza dell'istruzione .

Per altre informazioni sullo stack di chiamate, vedere Procedura: Usare la finestra Stack di chiamate.

Per tracciare visivamente i punti di interruzione durante l'esecuzione del codice, vedere mappa i metodi nello stack di chiamate durante il debug.

Impostare un punto di interruzione nella finestra Disassembly

  1. Per aprire la finestra Disassembly, è necessario essere sospesi durante il debug. Selezionare Debug>Windows>Disassemblyoppure premere CTRL+ALT+D.

  2. Nella finestra Disassembly , fare clic sul margine sinistro dell'istruzione su cui si desidera inserire un punto di interruzione. È anche possibile selezionarlo e premere F9oppure fare clic con il pulsante destro del mouse e selezionare punto di interruzione>Inserisci punto di interruzione.