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

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 Tasti di scelta rapida in Visual Studio.

Prerequisiti

Usare la configurazione della build di debug

Le modalità Debug e Rilascio sono configurazioni di compilazione predefinite di Visual Studio. Usare la configurazione di compilazione di debug per il debug e la configurazione release per la distribuzione finale della versione.

Nella configurazione debug, un programma viene compilato con informazioni di debug simboliche complete e nessuna ottimizzazione. L'ottimizzazione rende più difficile 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 con Visual Studio.

    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:

    Visual Studio toolbar with debug highlighted

Imposta punto di interruzione

Il punto di interruzione arresta temporaneamente l'esecuzione dell'applicazione prima che venga eseguita la 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 punto di interruzione dalla barra dei 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.

    Visual Studio Program window with breakpoint set

  2. Premere F5 per eseguire il programma in modalità debug. Un altro modo per avviare il debug consiste nello 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 che il metodo Console.WriteLine venga eseguito. Nella finestra Variabili locali vengono visualizzati i valori delle variabili definite nel metodo attualmente in esecuzione.

    Screenshot of a breakpoint in Visual Studio

Usare la finestra di Controllo immediato

La finestra di controllo immediato consente di interagire con l'applicazione in fase di debug. È possibile modificare in modo interattivo il valore delle variabili per vedere come influisce sul programma.

  1. Se la finestra di controllo immediato non è visibile, visualizzarla scegliendo Debug>Finestre>Controllo immediato.

  2. Immettere name = "Gracie" nella finestra di controllo immediato e premere il tasto INVIO.

  3. Immettere currentDate = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime() nella Finestra di controllo immediato e premere INVIO.

    Si noti che nella Finestra di controllo immediato vengono visualizzati il valore della variabile string e le proprietà del valore DateTime. Inoltre, i valori delle variabili vengono aggiornati nella finestra Variabili locali.

    Locals and Immediate Windows in Visual Studio 2019

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

    I valori visualizzati nella finestra della console corrispondono alle modifiche apportate nella finestra di controllo immediato.

    Console window showing the entered values

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

Impostare un punto di interruzione condizionale

Il programma visualizza la stringa immessa dall'utente. Ma cosa succede se l'utente non immette alcuna stringa? È 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 di scelta rapida selezionare Condizioni per aprire la finestra di dialogo Impostazioni punto di interruzione. Selezionare la casella Condizioni se non è già selezionata.

    Editor showing breakpoint settings panel - C#

  2. Per Espressione condizionale immettere il codice seguente nel campo che mostra il codice di esempio che verifica se x è 5.

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

    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 nello specificare una condizione di filtro, che interrompe l'esecuzione del programma in base ad 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 chiesto di immettere il proprio 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 metodo Console.WriteLine.

  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. Si noti che il valore della variabile name è "" o String.Empty.

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

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

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

    Immediate Window returning a value of true after the statement is executed - 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 facendo clic sul punto nel margine sinistro della finestra del codice. Altri modi per cancellare un punto di interruzione sono premendo F9 o scegliendo Debug >Attiva/Disattiva punto di interruzione mentre è selezionata la riga di codice.

Eseguire un'istruzione dettagliata di un programma

Visual Studio consente anche di esaminare il programma una riga alla volta e di 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. Scegliere Debug>Esegui l’istruzione. 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.

    C#

    Visual Studio step into method - C#

    Visual Basic

    Visual Studio step into method - Visual Basic

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

  2. Premere F11. Visual Studio evidenzia ora la riga dell'esecuzione successiva. La finestra variabili locali rimane invariata e la finestra della console rimane vuota.

    C#

    Visual Studio step in method source - C#

    Visual Basic

    Visual Studio step into method source - Visual Basic

  3. Premere F11. Visual Studio evidenzia l'istruzione che include l'assegnazione della variabile name. La finestra Variabili locali mostra che name è null, e nella finestra della console viene visualizzata la stringa "Qual è il tuo 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 Console.ReadLine acquisisce comunque l'input.

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

  6. Premere F11. Nella finestra Variabili locali viene visualizzato il valore della variabile currentDate dopo l'assegnazione dalla proprietà DateTime.Now. 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>Esci. Un altro modo per arrestare l'esecuzione dettagliata consiste nel premere MAIUSC+F11.

    La finestra della console visualizza un messaggio e attende che venga premuto un tasto.

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

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 di rilascio integra le ottimizzazioni del compilatore che possono talvolta influire negativamente sul comportamento di un'applicazione. Ad esempio, le ottimizzazioni del compilatore progettate per migliorare le prestazioni possono creare delle race condition nelle applicazioni multithreading.

Per compilare e testare la versione di rilascio dell'applicazione console, modificare la configurazione di compilazione nella barra degli strumenti da Debug in Rilascio.

default Visual Studio toolbar with release highlighted

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

Passaggi successivi

In questa esercitazione sono stati usati gli strumenti di debug di Visual Studio. Nell'esercitazione successiva si pubblica una versione distribuibile dell'app.

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 Tasti di scelta rapida in Visual Studio.

Prerequisiti

Usare la configurazione della build di debug

Le modalità Debug e Rilascio sono configurazioni di compilazione predefinite di Visual Studio. Usare la configurazione di compilazione di debug per il debug e la configurazione release per la distribuzione finale della versione.

Nella configurazione debug, un programma viene compilato con informazioni di debug simboliche complete e nessuna ottimizzazione. L'ottimizzazione rende più difficile 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 con Visual Studio.

    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:

    Visual Studio toolbar with debug highlighted

Imposta punto di interruzione

Il punto di interruzione arresta temporaneamente l'esecuzione dell'applicazione prima che venga eseguita la 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 punto di interruzione dalla barra dei 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.

    Visual Studio Program window with breakpoint set

  2. Premere F5 per eseguire il programma in modalità debug. Un altro modo per avviare il debug consiste nello 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 che il metodo Console.WriteLine venga eseguito. Nella finestra Variabili locali vengono visualizzati i valori delle variabili definite nel metodo attualmente in esecuzione.

    Screenshot of a breakpoint in Visual Studio

Usare la finestra di Controllo immediato

La finestra di controllo immediato consente di interagire con l'applicazione in fase di debug. È possibile modificare in modo interattivo il valore delle variabili per vedere come influisce sul programma.

  1. Se la finestra di controllo immediato non è visibile, visualizzarla scegliendo Debug>Finestre>Controllo immediato.

  2. Immettere name = "Gracie" nella finestra di controllo immediato e premere il tasto INVIO.

  3. Immettere currentDate = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime() nella Finestra di controllo immediato e premere INVIO.

    Si noti che nella Finestra di controllo immediato vengono visualizzati il valore della variabile string e le proprietà del valore DateTime. Inoltre, i valori delle variabili vengono aggiornati nella finestra Variabili locali.

    Locals and Immediate Windows in Visual Studio 2019

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

    I valori visualizzati nella finestra della console corrispondono alle modifiche apportate nella finestra di controllo immediato.

    Console window showing the entered values

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

Impostare un punto di interruzione condizionale

Il programma visualizza la stringa immessa dall'utente. Ma cosa succede se l'utente non immette alcuna stringa? È 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 di scelta rapida selezionare Condizioni per aprire la finestra di dialogo Impostazioni punto di interruzione. Selezionare la casella Condizioni se non è già selezionata.

    Editor showing breakpoint settings panel - C#

  2. Per Espressione condizionale immettere il codice seguente nel campo che mostra il codice di esempio che verifica se x è 5.

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

    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 nello specificare una condizione di filtro, che interrompe l'esecuzione del programma in base ad 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 chiesto di immettere il proprio 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 metodo Console.WriteLine.

  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. Si noti che il valore della variabile name è "" o String.Empty.

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

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

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

    Immediate Window returning a value of true after the statement is executed - 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 facendo clic sul punto nel margine sinistro della finestra del codice. Altri modi per cancellare un punto di interruzione sono premendo F9 o scegliendo Debug >Attiva/Disattiva punto di interruzione mentre è selezionata la riga di codice.

Eseguire un'istruzione dettagliata di un programma

Visual Studio consente anche di esaminare il programma una riga alla volta e di 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. Scegliere Debug>Esegui l’istruzione. 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.

    C#

    Visual Studio step into method - C#

    Visual Basic

    Visual Studio step into method - Visual Basic

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

  2. Premere F11. Visual Studio evidenzia ora la riga dell'esecuzione successiva. La finestra Variabili locali rimane invariata e la finestra della console rimane vuota.

    C#

    Visual Studio step in method source - C#

    Visual Basic

    Visual Studio step into method source - Visual Basic

  3. Premere F11. Visual Studio evidenzia l'istruzione che include l'assegnazione della variabile name. La finestra Variabili locali mostra che name è null, e nella finestra della console viene visualizzata la stringa "Qual è il tuo 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 Console.ReadLine acquisisce comunque l'input.

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

  6. Premere F11. Nella finestra Variabili locali viene visualizzato il valore della variabile currentDate dopo l'assegnazione dalla proprietà DateTime.Now. 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>Esci. Un altro modo per arrestare l'esecuzione dettagliata consiste nel premere MAIUSC+F11.

    La finestra della console visualizza un messaggio e attende che venga premuto un tasto.

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

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 di rilascio integra le ottimizzazioni del compilatore che possono talvolta influire negativamente sul comportamento di un'applicazione. Ad esempio, le ottimizzazioni del compilatore progettate per migliorare le prestazioni possono creare delle race condition nelle applicazioni multithreading.

Per compilare e testare la versione di rilascio dell'applicazione console, modificare la configurazione di compilazione nella barra degli strumenti da Debug in Rilascio.

default Visual Studio toolbar with release highlighted

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

Passaggi successivi

In questa esercitazione sono stati usati gli strumenti di debug di Visual Studio. Nell'esercitazione successiva si pubblica una versione distribuibile dell'app.

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

Prerequisiti

Usare la configurazione della build di debug

Le modalità Debug e Rilascio sono configurazioni di compilazione predefinite di Visual Studio. Usare la configurazione di compilazione di debug per il debug e la configurazione release per la distribuzione finale della versione.

Nella configurazione debug, un programma viene compilato con informazioni di debug simboliche complete e nessuna ottimizzazione. L'ottimizzazione rende più difficile 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 con Visual Studio.

    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:

    Visual Studio toolbar with debug highlighted

Imposta punto di interruzione

Il punto di interruzione arresta temporaneamente l'esecuzione dell'applicazione prima che venga eseguita la 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 punto di interruzione dalla barra dei 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.

    Visual Studio Program window with breakpoint set

  2. Premere F5 per eseguire il programma in modalità debug. Un altro modo per avviare il debug consiste nello 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 che il metodo Console.WriteLine venga eseguito. Nella finestra Variabili locali vengono visualizzati i valori delle variabili definite nel metodo attualmente in esecuzione.

    Screenshot of a breakpoint in Visual Studio

Usare la finestra di Controllo immediato

La finestra di controllo immediato consente di interagire con l'applicazione in fase di debug. È possibile modificare in modo interattivo il valore delle variabili per vedere come influisce sul programma.

  1. Se la finestra di controllo immediato non è visibile, visualizzarla scegliendo Debug>Finestre>Controllo immediato.

  2. Immettere name = "Gracie" nella finestra di controllo immediato e premere il tasto INVIO.

  3. Immettere currentDate = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime() nella Finestra di controllo immediato e premere INVIO.

    Si noti che nella Finestra di controllo immediato vengono visualizzati il valore della variabile string e le proprietà del valore DateTime. Inoltre, i valori delle variabili vengono aggiornati nella finestra Variabili locali.

    Locals and Immediate Windows in Visual Studio 2019

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

    I valori visualizzati nella finestra della console corrispondono alle modifiche apportate nella finestra di controllo immediato.

    Console window showing the entered values

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

Impostare un punto di interruzione condizionale

Il programma visualizza la stringa immessa dall'utente. Ma cosa succede se l'utente non immette alcuna stringa? È 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 di scelta rapida selezionare Condizioni per aprire la finestra di dialogo Impostazioni punto di interruzione. Selezionare la casella Condizioni se non è già selezionata.

    Editor showing breakpoint settings panel - C#

  2. Per Espressione condizionale immettere il codice seguente nel campo che mostra il codice di esempio che verifica se x è 5.

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

    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 nello specificare una condizione di filtro, che interrompe l'esecuzione del programma in base ad 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 chiesto di immettere il proprio 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 metodo Console.WriteLine.

  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. Si noti che il valore della variabile name è "" o String.Empty.

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

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

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

    Immediate Window returning a value of true after the statement is executed - 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 facendo clic sul punto nel margine sinistro della finestra del codice. Altri modi per cancellare un punto di interruzione sono premendo F9 o scegliendo Debug >Attiva/Disattiva punto di interruzione mentre è selezionata la riga di codice.

Eseguire un'istruzione dettagliata di un programma

Visual Studio consente anche di esaminare il programma una riga alla volta e di 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. Anche se non è attualmente in corso il debug e lo stato attivo si concentra su Visual Studio:

  1. Scegliere Debug>Esegui l’istruzione. 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.

    C#

    Visual Studio step into method - C#

    Visual Basic

    Visual Studio step into method - Visual Basic

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

  2. Premere F11. Visual Studio evidenzia ora la riga dell'esecuzione successiva. La finestra Variabili locali rimane invariata e la finestra della console rimane vuota.

    C#

    Visual Studio step in method source - C#

    Visual Basic

    Visual Studio step into method source - Visual Basic

  3. Premere F11. Visual Studio evidenzia l'istruzione che include l'assegnazione della variabile name. La finestra Variabili locali mostra che name è null, e nella finestra della console viene visualizzata la stringa "Qual è il tuo 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 Console.ReadLine acquisisce comunque l'input.

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

  6. Premere F11. Nella finestra Variabili locali viene visualizzato il valore della variabile currentDate dopo l'assegnazione dalla proprietà DateTime.Now. 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>Esci. Un altro modo per arrestare l'esecuzione dettagliata consiste nel premere MAIUSC+F11.

    La finestra della console visualizza un messaggio e attende che venga premuto un tasto.

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

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 di rilascio integra le ottimizzazioni del compilatore che possono talvolta influire negativamente sul comportamento di un'applicazione. Ad esempio, le ottimizzazioni del compilatore progettate per migliorare le prestazioni possono creare delle race condition nelle applicazioni multithreading.

Per compilare e testare la versione di rilascio dell'applicazione console, modificare la configurazione di compilazione nella barra degli strumenti da Debug in Rilascio.

default Visual Studio toolbar with release highlighted

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

Passaggi successivi

In questa esercitazione sono stati usati gli strumenti di debug di Visual Studio. Nell'esercitazione successiva si pubblica una versione distribuibile dell'app.