Condividi tramite


Esercitazione: Eseguire il debug di un'applicazione console .NET

Questa esercitazione presenta gli strumenti di debug disponibili in Visual Studio.

Importante

Tutti i tasti di scelta rapida si basano sulle impostazioni predefinite di Visual Studio. I tasti di scelta rapida possono variare. Per altre informazioni, vedere i tasti di scelta rapida Chiavi in Visual Studio.

Questa esercitazione presenta gli strumenti di debug disponibili in Visual Studio Code per l'uso delle app .NET.

Questa esercitazione presenta gli strumenti di debug disponibili in GitHub Codespaces per l'uso delle app .NET.

Prerequisiti

Questa esercitazione funziona con l'app console creata in Creare un'applicazione console .NET.

Usare la configurazione della build di debug

Debug e Release sono configurazioni di compilazione predefinite di Visual Studio. Usare la configurazione della build Debug per il debug e la configurazione della build Release per la distribuzione finale.

Nella configurazione debug un programma viene compilato con informazioni di debug simboliche complete e nessuna ottimizzazione. L'ottimizzazione complica il debug, perché la relazione tra il codice sorgente e le istruzioni generate è più complessa. La configurazione del rilascio di un programma non dispone di informazioni di debug simbolico ed è completamente ottimizzata.

Per impostazione predefinita, Visual Studio usa la configurazione di compilazione debug, quindi non è necessario modificarla prima del debug.

  1. Avviare Visual Studio.

  2. Aprire il progetto creato in Creare un'applicazione console .NET.

    La configurazione di compilazione corrente viene visualizzata sulla barra degli strumenti. L'immagine della barra degli strumenti seguente mostra che Visual Studio è configurato per compilare la versione debug dell'app:

    Barra degli strumenti di Visual Studio con debug evidenziato

Imposta punto di interruzione

Un punto di interruzione interrompe temporaneamente l'esecuzione dell'applicazione prima dell'esecuzione della riga con il punto di interruzione.

  1. Impostare un punto di interruzione nella riga che visualizza il nome, la data e l'ora facendo clic sul margine sinistro della finestra del codice in tale riga. Il margine sinistro si trova a sinistra dei numeri di riga. Altri modi per impostare un punto di interruzione sono posizionare il cursore nella riga di codice e quindi premere F9 o scegliere Debug>Attiva/Disattiva Breakpoint dalla barra del menu.

    Come illustrato nell'immagine seguente, Visual Studio indica la riga in cui viene impostato il punto di interruzione evidenziandola e visualizzando un punto rosso nel margine sinistro.

    Finestra del Programma di Visual Studio con punto di interruzione impostato

  2. Premere F5 per eseguire il programma in modalità debug. Un altro modo per avviare il debug consiste nel scegliere Debug>Avvia debug dal menu.

  3. Immettere una stringa nella finestra della console quando il programma richiede un nome e quindi premere INVIO.

  4. L'esecuzione del programma si arresta quando raggiunge il punto di interruzione e prima dell'esecuzione del Console.WriteLine metodo. Nella finestra Variabili locali vengono visualizzati i valori delle variabili definite nel metodo attualmente in esecuzione.

    Screenshot di un punto di interruzione in Visual Studio

  1. Avvia Visual Studio Code.

  2. Aprire la cartella del progetto creato in Creare un'applicazione console .NET.

  3. Aprire il file Program.cs.

  4. Impostare un punto di interruzione nella riga che visualizza il nome, la data e l'ora facendo clic sul margine sinistro della finestra del codice. Il margine sinistro si trova a sinistra dei numeri di riga. Altri modi per impostare un punto di interruzione sono premendo F9 o scegliendo Esegui>Attiva/Disattiva punto di interruzione dal menu mentre è selezionata la riga di codice.

    Visual Studio Code indica la riga in cui è impostato il punto di interruzione visualizzando un punto rosso nel margine sinistro.

    Punto di interruzione impostato

  1. Aprire il GitHub Codespace creato in Creare un'applicazione console .NET.

  2. Aprire il file HelloWorld.cs .

  3. Impostare un punto di interruzione nella riga che visualizza il nome, la data e l'ora facendo clic sul margine sinistro della finestra del codice. Il margine sinistro si trova a sinistra dei numeri di riga. È anche possibile impostare un punto di interruzione premendo F9 mentre è selezionata la riga di codice.

    Punto di interruzione impostato

Avviare il debug

L'esecuzione del programma si arresta quando raggiunge il punto di interruzione, come descritto nella sezione precedente. Nella finestra Variabili locali vengono visualizzati i valori delle variabili definite nel metodo attualmente in esecuzione.

Debug e Release sono configurazioni di compilazione predefinite di .NET. Usare la configurazione della build Debug per il debug e la configurazione della build Release per la distribuzione finale.

Per impostazione predefinita, le impostazioni di avvio di Visual Studio Code usano la configurazione di compilazione Debug, quindi non è necessario modificarla prima di eseguire il debug.

  1. Aprire la visualizzazione Debug selezionando l'icona Debug nel menu a sinistra.

    Aprire la scheda Debug in Visual Studio Code

  2. Selezionare Esegui e Debug. Se richiesto, selezionare C# e quindi selezionare C#: Avviare il progetto di startup. Altri modi per avviare il programma in modalità di debug sono premendo F5 o scegliendo Esegui>Avvia debug dal menu.

    Avviare il debug

  3. Se viene chiesto di selezionare Avvia configurazione, selezionare C#: Debug file attivo.

  4. Selezionare la scheda console di debug per visualizzare la richiesta "Qual è il tuo nome?" del programma prima di attendere una risposta.

    Selezionare la scheda Console di debug

  5. Immettere una stringa nella finestra della console di debug in risposta alla richiesta di un nome e quindi premere invio.

    L'esecuzione del programma si arresta quando raggiunge il punto di interruzione e prima dell'esecuzione del metodo Console.WriteLine. Nella sezione Locali della finestra Variabili vengono visualizzati i valori delle variabili definite nel metodo attualmente in esecuzione.

    Raggiunto punto di interruzione, visualizzazione variabili locali

Per impostazione predefinita, GitHub Codespaces usa la configurazione di compilazione Debug, quindi non è necessario modificarla prima del debug.

  1. Aprire la visualizzazione Debug selezionando l'icona Debug nel menu a sinistra.

    Aprire la scheda Debug in Visual Studio Code

  2. Selezionare Esegui e Debug. Se richiesto, selezionare C# come debugger e quindi selezionare C#: Debug del file attivo come Configurazione di avvio.

  3. Selezionare la scheda console di debug per visualizzare la richiesta "Qual è il tuo nome?" del programma prima di attendere una risposta.

  4. Immettere una stringa nella finestra della console di debug in risposta alla richiesta di un nome e quindi premere invio.

    L'esecuzione del programma si arresta quando raggiunge il punto di interruzione e prima dell'esecuzione del metodo Console.WriteLine. Nella sezione Locali della finestra Variabili vengono visualizzati i valori delle variabili definite nel metodo attualmente in esecuzione.

    Raggiunto punto di interruzione, visualizzazione variabili locali

Usare la finestra Immediata

La finestra Immediata consente di interagire con l'applicazione di cui si sta eseguendo il debug. È possibile modificare in modo interattivo il valore delle variabili per vedere come influisce sul programma.

  1. Se la finestra Immediate non è visibile, visualizzarla scegliendo Debug>Windows>Immediate.

  2. Immettere name = "Gracie" nella finestra Immediata e premere INVIO .

  3. Immettere currentDate = DateTime.Parse("2026-02-05T20:25:00Z").ToUniversalTime() nella finestra Immediata e premere INVIO .

    Nella finestra Immediata viene visualizzato il valore della variabile stringa e le proprietà del DateTime valore. Inoltre, i valori delle variabili vengono aggiornati nella finestra Variabili locali .

    Variabili locali e la Finestra immediata in Visual Studio

  4. Premere F5 per continuare l'esecuzione del programma. Un altro modo per continuare consiste nel scegliere Debug>Continua dal menu.

    I valori visualizzati nella finestra della console corrispondono alle modifiche apportate nella finestra Immediata .

  5. Premere un tasto qualsiasi per uscire dall'applicazione e arrestare il debug.

Usare la console di debug

La finestra console di debug consente di interagire con l'applicazione di cui si sta eseguendo il debug. È possibile modificare il valore delle variabili per vedere come influisce sul programma.

  1. Selezionare la scheda Console di Debug.

  2. Immettere name = "Gracie" al prompt nella parte inferiore della finestra Console di Debug e premere INVIO.

    Modificare i valori delle variabili

  3. Immettere nella parte inferiore della finestra della Console debug e premere invio.

    Nella finestra Variabili vengono visualizzati i nuovi valori delle variabili e .

  4. Continuare l'esecuzione del programma selezionando il pulsante Continua nella barra degli strumenti. Un altro modo per continuare consiste nel premere F5.

    Continuare il debug

    I valori visualizzati nella finestra della console corrispondono alle modifiche apportate nella Console di debug.

    Terminale con i valori immessi

  5. Premere Invio per uscire dall'applicazione e arrestare il debug.

Impostare un punto di interruzione condizionale

Il programma visualizza la stringa immessa dall'utente. Cosa accade se l'utente non immette nulla? È possibile testarlo con una funzionalità di debug utile denominata punto di interruzione condizionale.

  1. Fare clic con il pulsante destro del mouse sul punto rosso che rappresenta il punto di interruzione. Nel menu contestuale, selezionare Condizioni per aprire la finestra di dialogo Impostazioni punto di interruzione. Selezionare la casella Condizioni se non è già selezionata.

    Editor che mostra il pannello delle impostazioni del punto di interruzione - C#

  2. Per Espressione condizionale immettere il codice seguente nel campo di testo.

    string.IsNullOrEmpty(name)
    
    String.IsNullOrEmpty(name)
    

    Ogni volta che viene raggiunto il punto di interruzione, il debugger chiama il metodo String.IsNullOrWhiteSpace(name) e si interrompe in questa riga solo se la chiamata al metodo restituisce true.

    Anziché un'espressione condizionale, è possibile specificare un numero di passaggi, che interrompe l'esecuzione del programma prima dell'esecuzione di un'istruzione un numero specificato di volte. Un'altra opzione consiste nel specificare una condizione di filtro, che interrompe l'esecuzione del programma in base a attributi quali identificatore di thread, nome del processo o nome del thread.

  3. Selezionare Chiudi per chiudere la finestra di dialogo.

  4. Avviare il programma con il debug premendo F5.

  5. Nella finestra della console premere INVIO quando viene richiesto di immettere il nome.

  6. Poiché la condizione specificata (name è null o String.Empty) è stata soddisfatta, l'esecuzione del programma si arresta quando raggiunge il punto di interruzione e prima dell'esecuzione del Console.WriteLine metodo.

  7. Selezionare la finestra Variabili locali , che mostra i valori delle variabili locali per il metodo attualmente in esecuzione. In questo caso, Main è il metodo attualmente in esecuzione. Osservare che il valore della name variabile è ""o String.Empty.

  8. Verificare che il valore sia una stringa vuota immettendo l'istruzione seguente nella finestra Immediata e premendo INVIO. Il risultato è true.

    ? name == String.Empty
    
    ? String.IsNullOrEmpty(name)
    

    Il punto interrogativo indica alla finestra immediata di valutare un'espressione.

    Finestra immediata che restituisce un valore true dopo l'esecuzione dell'istruzione - C#

  9. Premere F5 per continuare l'esecuzione del programma.

  10. Premere un tasto qualsiasi per chiudere la finestra della console e arrestare il debug.

  11. Cancellare il punto di interruzione cliccando sul pallino nel margine sinistro della finestra del codice. Altri modi per cancellare un punto di interruzione sono premendo F9 o selezionando Debug > Attiva/Disattiva punto di interruzione mentre la riga di codice è selezionata.

  1. Fare clic con il pulsante destro del mouse (CTRL-click su macOS) sul punto rosso che rappresenta il punto di interruzione. Nel menu di scelta rapida selezionare Modifica punto di interruzione per aprire una finestra di dialogo che consente di immettere un'espressione condizionale.

    menu contestuale del punto di interruzione

  2. Selezionare Expression nell'elenco a discesa, immettere l'espressione condizionale seguente e premere INVIO.

    String.IsNullOrEmpty(name)
    

    Immettere un'espressione condizionale

    Ogni volta che viene raggiunto il punto di interruzione, il debugger chiama il metodo String.IsNullOrEmpty(name) e si interrompe in questa riga solo se la chiamata al metodo restituisce true.

    Anziché un'espressione condizionale, è possibile specificare un numero di passaggi, che interrompe l'esecuzione del programma prima che un'istruzione venga eseguita un numero specificato di volte. Un'altra opzione consiste nel specificare una condizione di filtro, che interrompe l'esecuzione del programma in base a attributi quali identificatore di thread, nome del processo o nome del thread.

  3. Avviare il programma con il debug premendo F5.

  4. Nella scheda Console di debug, premere Invio quando viene richiesto di immettere il tuo nome.

    Poiché la condizione specificata (name è null o String.Empty) è stata soddisfatta, l'esecuzione del programma si arresta quando raggiunge il punto di interruzione e prima dell'esecuzione del metodo Console.WriteLine.

    Nella finestra Variabili , viene indicato che il valore della variabile name è ""o String.Empty.

  5. Verificare che il valore sia una stringa vuota inserendo la seguente istruzione al prompt Console di debug e premendo Invio. Il risultato è true.

    name == String.Empty
    
  6. Seleziona il pulsante Continua sulla barra degli strumenti per continuare l'esecuzione del programma.

  7. Premere INVIO per uscire dal programma e arrestare il debug.

  8. Cancellare il punto di interruzione cliccando sul pallino nel margine sinistro della finestra del codice. Altri modi per cancellare un punto di interruzione sono premendo F9 oppure scegliendo Esegui > Attiva/Disattiva punto di interruzione dal menu mentre è selezionata la riga di codice.

  9. Se viene visualizzato un avviso che indica che la condizione del punto di interruzione andrà persa, seleziona Rimuovi punto di interruzione.

Eseguire un programma passo a passo

Visual Studio consente anche di eseguire un'istruzione riga per riga attraverso un programma e monitorarne l'esecuzione. In genere, si imposta un punto di interruzione e si segue il flusso del programma attraverso una piccola parte del codice del programma. Poiché questo programma è piccolo, è possibile scorrere l'intero programma.

  1. Impostare un punto di interruzione nella riga di codice che visualizza il prompt "Come ti chiami?".

  2. Scegliere Debug>Passa all'interno. Un altro modo per eseguire il debug di un'istruzione alla volta consiste nel premere F11.

    Visual Studio evidenzia e visualizza una freccia accanto alla riga di esecuzione successiva.

    Visual Studio passare al metodo - C#

    A questo punto, la finestra Variabili locali mostra che la args matrice è vuota e namecurrentDate ha valori predefiniti. Inoltre, Visual Studio ha aperto una finestra della console vuota.

  3. Premere F11. Visual Studio evidenzia l'istruzione che include l'assegnazione di variabili name. La finestra Variabili locali mostra che name è nulle nella finestra della console viene visualizzata la stringa "Qual è il nome?".

  4. Rispondere al prompt immettendo una stringa nella finestra della console e premendo INVIO. La console non risponde e la stringa immessa non viene visualizzata nella finestra della console, ma il metodo acquisisce comunque l'input Console.ReadLine .

  5. Premere F11. Visual Studio evidenzia l'istruzione che include l'assegnazione di variabili currentDate. Nella finestra Variabili locali viene visualizzato il valore restituito dalla chiamata al Console.ReadLine metodo . La finestra della console visualizza anche la stringa immessa al prompt.

  6. Premere F11. La finestra Variabili locali mostra il valore della currentDate variabile dopo l'assegnazione dalla DateTime.Now proprietà . La finestra della console rimane invariata.

  7. Premere F11. Visual Studio chiama il metodo Console.WriteLine(String, Object, Object). Nella finestra della console viene visualizzata la stringa formattata.

  8. Scegliere Debug>Passa Oltre. Un altro modo per arrestare l'esecuzione dettagliata consiste nel premere Shift+F11.

    La finestra della console visualizza un messaggio e attende di premere un tasto.

  9. Premere un tasto qualsiasi per chiudere la finestra della console e arrestare il debug.

Visual Studio Code consente anche di eseguire un'istruzione riga per riga attraverso un programma e monitorarne l'esecuzione. In genere, si imposta un punto di interruzione e si segue il flusso del programma attraverso una piccola parte del codice del programma. Poiché questo programma è piccolo, è possibile scorrere l'intero programma.

  1. Impostare un punto di interruzione nella riga di codice che visualizza il prompt "Come ti chiami?".

  2. Premere F5 per avviare il debug.

    Visual Studio Code evidenzia la riga del punto di interruzione.

    A questo punto, la finestra Variabili di indica che la matrice di è vuota e e hanno valori predefiniti.

  3. Selezionare Passa dentro nella barra degli strumenti Debug o premere F11.

    Step-Into pulsante

    Visual Studio Code evidenzia la riga successiva.

  4. Visual Studio Code esegue il Console.WriteLine per il prompt del nome ed evidenzia la linea successiva da eseguire. La riga successiva è la Console.ReadLine per il name. La finestra Variabili è invariata e nella scheda Terminale viene visualizzato il prompt "Qual è il tuo nome?".

  5. Selezionare Passo negli o premere F11.

    Visual Studio Code evidenzia l'assegnazione di variabili name. La finestra Variabili mostra che name è ancora null.

  6. Rispondere al prompt immettendo una stringa nella scheda Terminale e premendo il tasto Invio.

    La scheda del debug console potrebbe non visualizzare la stringa inserita durante la digitazione, ma il metodo Console.ReadLine acquisirà il tuo input.

  7. Selezionare Passo negli o premere F11.

    Visual Studio Code evidenzia l'assegnazione di variabili currentDate. Nella finestra Variabili viene visualizzato il valore restituito dalla chiamata al metodo . Nella scheda terminale viene visualizzata la stringa immessa al prompt.

  8. Selezionare Passo negli o premere F11.

    Nella finestra Variabili viene visualizzato il valore della variabile currentDate dopo l'assegnazione dalla proprietà DateTime.Now.

  9. Selezionare Passo negli o premere F11.

    Visual Studio Code chiama il metodo Console.WriteLine(String, Object, Object). Nella finestra della console viene visualizzata la stringa formattata.

  10. Selezionare Passo fuori o premere MAIUSC+F11.

    Step-Out pulsante

    Il terminale visualizza "Premere qualsiasi tasto per uscire..."

  11. Premere un tasto qualsiasi per uscire dal programma.

Usare la configurazione della build di rilascio

Dopo aver testato la versione di debug dell'applicazione, è necessario compilare e testare anche la versione release. La versione release incorpora ottimizzazioni del compilatore che a volte possono influire negativamente sul comportamento di un'applicazione. Ad esempio, le ottimizzazioni del compilatore progettate per migliorare le prestazioni possono creare condizioni di gara nelle applicazioni multithread.

Per compilare e testare la versione release dell'applicazione console, modificare la configurazione della build sulla barra degli strumenti da Debug a Rilascio.

barra degli strumenti predefinita di Visual Studio con la release evidenziata

Quando si preme F5 o si sceglie Compila soluzione dal menu Build, Visual Studio compila la versione release dell'applicazione. È possibile testarla come è stata testata la versione di debug.

Per compilare e testare la versione release dell'applicazione console, aprire il terminale ed eseguire il comando seguente:

dotnet run --configuration Release

Per compilare e testare la versione Release dell'applicazione console, eseguire il comando seguente nel terminale:

dotnet run --configuration Release HelloWorld.cs

Passaggi successivi

In questa esercitazione sono stati usati gli strumenti di debug. Nel prossimo tutorial, pubblicherai una versione distribuibile dell'app.