Share via


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

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

Prerequisiti

Usare la configurazione della build di debug

Le modalità Debug e Versione sono configurazioni della build predefinite di .NET. Usa la configurazione della build di debug per il debug e la configurazione di versione per la distribuzione della versione finale.

Nella configurazione di 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 di versione di un programma non dispone di informazioni di debug simbolico ed è completamente ottimizzata.

Per impostazione predefinita, le impostazioni di avvio di Visual Studio Code usano la configurazione della build di debug, quindi non è necessario modificarla prima del debug.

  1. Avviare Visual Studio Code.

  2. Apri la cartella del progetto creato in Creare un'applicazione console .NET con Visual Studio Code.

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. Aprire il file Program.cs.

  2. Imposta 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 viene impostato il punto di interruzione visualizzando un punto rosso sul margine sinistro.

    Breakpoint set

Configurare l'input del terminale

Il punto di interruzione si trova dopo una chiamata al metodo Console.ReadLine. La Console di debug non accetta l'input del terminale per un programma in esecuzione. Per gestire l'input del terminale durante il debug, è possibile usare il terminale integrato (una delle finestre di Visual Studio Code) o un terminale esterno. Per questa esercitazione si usa il terminale integrato.

  1. La cartella del progetto contiene una cartella .vscode. Apri il file launch.json presente nella cartella .vscode.

  2. In launch.json, modifica l'impostazione console da internalConsole a integratedTerminal:

    "console": "integratedTerminal",
    
  3. Salva le modifiche.

Consente di iniziare il debug

  1. Apri la visualizzazione Debug selezionando l'icona Debug nel menu di sinistra.

    Open the Debug tab in Visual Studio Code

  2. Seleziona la freccia verde nella parte superiore del riquadro, accanto a .NET Core Launch (console). Altri modi per avviare il programma in modalità di debug sono premendo F5 o scegliendo Esegui>Avvia debug dal menu.

    Start debugging

  3. Seleziona la scheda Terminale per visualizzare la richiesta "Come ti chiami?" che il programma visualizza prima di attendere una risposta.

    Select the Terminal tab

  4. Immetti una stringa nella finestra Terminale in risposta alla richiesta del nome, quindi premi Invio.

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

    Breakpoint hit, showing Locals

Usare la Console di debug

La finestra Console di debug consente di interagire con l'applicazione in fase di debug. È possibile modificare il valore delle variabili per vedere in che modo tale operazione influisce sul programma.

  1. Seleziona la scheda Console di debug.

  2. Immetti name = "Gracie" nella richiesta nella parte inferiore della finestra Console di debug e premi il tasto Invio.

    Change variable values

  3. Immetti currentDate = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime() nella parte inferiore della finestra Console di debug e premi il tasto Invio.

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

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

    Continue debugging

  5. Seleziona di nuovo la scheda Terminale.

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

    Terminal showing the entered values

  6. Premi 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 testare questo comportamento con una funzionalità di debug utile denominata punto di interruzione condizionale.

  1. Fai clic con il pulsante destro del mouse (tieni premuto Ctrl su macOS) sul punto rosso che rappresenta il punto di interruzione. Nel menu di scelta rapida seleziona Modifica punto di interruzione per aprire una finestra di dialogo che consente di immettere un'espressione condizionale.

    Breakpoint context menu

  2. Seleziona Expression nell'elenco a discesa, immetti l'espressione condizionale seguente e premi Invio.

    String.IsNullOrEmpty(name)
    

    Enter a conditional expression

    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. Avvia il programma con il debug premendo F5.

  4. Nella scheda Terminale, premi il tasto Invio quando ti viene chiesto 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.

    La finestra Variabili mostra che il valore della variabile name è "" o String.Empty.

  5. Verifica che il valore sia una stringa vuota immettendo l'istruzione seguente alla richiesta Console di debug e premendo Invio. Il risultato è true.

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

  7. Seleziona la scheda Terminale, quindi premi un tasto qualsiasi per uscire dal programma e arrestare il debug.

  8. Cancella 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 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.

Scorrere un programma istruzione per istruzione

Visual Studio Code 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 un'istruzione alla volta.

  1. Imposta un punto di interruzione nella parentesi graffa di apertura del metodo Main.

  2. Premere F5 per avviare il debug.

    Visual Studio Code evidenzia la riga del punto di interruzione.

    A questo punto, la finestra Variabili mostra che la matrice args è vuota, e name e currentDate hanno valori predefiniti.

  3. Seleziona Esegui>Eseguire l'istruzione o premi F11.

    Step-Into button

    Visual Studio Code evidenzia la riga successiva.

  4. Seleziona Esegui>Eseguire l'istruzione o premi F11.

    Visual Studio Code esegue Console.WriteLine per la richiesta del nome ed evidenzia la riga di esecuzione successiva. La riga successiva è l'oggetto Console.ReadLine per name. La finestra Variabili è invariata e nella scheda Terminale viene visualizzata la richiesta "Come ti chiami?".

  5. Seleziona Esegui>Eseguire l'istruzione o premi F11.

    Visual Studio evidenzia l'assegnazione della variabile name. La finestra Variabili mostra che name è ancora null.

  6. Rispondi al prompt immettendo una stringa nella scheda Terminale e premendo Invio.

    La scheda Terminale potrebbe non visualizzare la stringa immessa durante l'immissione, ma il metodo Console.ReadLine acquisirà l'input.

  7. Seleziona Esegui>Eseguire l'istruzione o premi F11.

    Visual Studio Code evidenzia l'assegnazione della variabile currentDate. Nella finestra Variabili viene visualizzato il valore restituito dalla chiamata al metodo Console.ReadLine. La scheda Terminale visualizza la stringa immessa al prompt.

  8. Seleziona Esegui>Eseguire l'istruzione o premi F11.

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

  9. Seleziona Esegui>Eseguire l'istruzione o premi F11.

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

  10. Seleziona Esegui>Esci da istruzione/routine o premi Shift+F11.

    Step-Out button

  11. Seleziona la scheda Terminale.

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

  12. Premere un tasto qualsiasi per uscire dal programma.

Usare la configurazione della build di versione

Dopo aver testato la versione di debug dell'applicazione, è necessario compilare e testare anche la versione finale. La versione di rilascio integra le ottimizzazioni del compilatore che possono influire sul comportamento di un'applicazione. Ad esempio, le ottimizzazioni del compilatore progettate per migliorare le prestazioni possono creare scenari di race condition nelle applicazioni multithreading.

Per compilare e testare la versione release dell'applicazione console, apri il Terminale ed esegui il comando seguente:

dotnet run --configuration Release

Risorse aggiuntive

Passaggi successivi

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

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

Prerequisiti

Usare la configurazione della build di debug

Le modalità Debug e Versione sono configurazioni della build predefinite di .NET. Usa la configurazione della build di debug per il debug e la configurazione di versione per la distribuzione della versione finale.

Nella configurazione di 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 di versione di un programma non dispone di informazioni di debug simbolico ed è completamente ottimizzata.

Per impostazione predefinita, le impostazioni di avvio di Visual Studio Code usano la configurazione della build di debug, quindi non è necessario modificarla prima del debug.

  1. Avviare Visual Studio Code.

  2. Apri la cartella del progetto creato in Creare un'applicazione console .NET con Visual Studio Code.

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. Aprire il file Program.cs.

  2. Imposta 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 viene impostato il punto di interruzione visualizzando un punto rosso sul margine sinistro.

    Breakpoint set

Configurare l'input del terminale

Il punto di interruzione si trova dopo una chiamata al metodo Console.ReadLine. La Console di debug non accetta l'input del terminale per un programma in esecuzione. Per gestire l'input del terminale durante il debug, è possibile usare il terminale integrato (una delle finestre di Visual Studio Code) o un terminale esterno. Per questa esercitazione si usa il terminale integrato.

  1. La cartella del progetto contiene una cartella .vscode. Apri il file launch.json presente nella cartella .vscode.

  2. In launch.json, modifica l'impostazione console da internalConsole a integratedTerminal:

    "console": "integratedTerminal",
    
  3. Salva le modifiche.

Consente di iniziare il debug

  1. Apri la visualizzazione Debug selezionando l'icona Debug nel menu di sinistra.

    Open the Debug tab in Visual Studio Code

  2. Seleziona la freccia verde nella parte superiore del riquadro, accanto a .NET Core Launch (console). Altri modi per avviare il programma in modalità di debug sono premendo F5 o scegliendo Esegui>Avvia debug dal menu.

    Start debugging

  3. Seleziona la scheda Terminale per visualizzare la richiesta "Come ti chiami?" che il programma visualizza prima di attendere una risposta.

    Select the Terminal tab

  4. Immetti una stringa nella finestra Terminale in risposta alla richiesta del nome, quindi premi Invio.

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

    Breakpoint hit, showing Locals

Usare la Console di debug

La finestra Console di debug consente di interagire con l'applicazione in fase di debug. È possibile modificare il valore delle variabili per vedere in che modo tale operazione influisce sul programma.

  1. Seleziona la scheda Console di debug.

  2. Immetti name = "Gracie" nella richiesta nella parte inferiore della finestra Console di debug e premi il tasto Invio.

    Change variable values

  3. Immetti currentDate = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime() nella parte inferiore della finestra Console di debug e premi il tasto Invio.

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

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

    Continue debugging

  5. Seleziona di nuovo la scheda Terminale.

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

    Terminal showing the entered values

  6. Premi 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 testare questo comportamento con una funzionalità di debug utile denominata punto di interruzione condizionale.

  1. Fai clic con il pulsante destro del mouse (tieni premuto Ctrl su macOS) sul punto rosso che rappresenta il punto di interruzione. Nel menu di scelta rapida seleziona Modifica punto di interruzione per aprire una finestra di dialogo che consente di immettere un'espressione condizionale.

    Breakpoint context menu

  2. Seleziona Expression nell'elenco a discesa, immetti l'espressione condizionale seguente e premi Invio.

    String.IsNullOrEmpty(name)
    

    Enter a conditional expression

    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. Avvia il programma con il debug premendo F5.

  4. Nella scheda Terminale, premi il tasto Invio quando ti viene chiesto 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.

    La finestra Variabili mostra che il valore della variabile name è "" o String.Empty.

  5. Verifica che il valore sia una stringa vuota immettendo l'istruzione seguente alla richiesta Console di debug e premendo Invio. Il risultato è true.

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

  7. Seleziona la scheda Terminale, quindi premi un tasto qualsiasi per uscire dal programma e arrestare il debug.

  8. Cancella 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 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.

Scorrere un programma istruzione per istruzione

Visual Studio Code 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 un'istruzione alla volta.

  1. Imposta un punto di interruzione nella parentesi graffa di apertura del metodo Main.

  2. Premere F5 per avviare il debug.

    Visual Studio Code evidenzia la riga del punto di interruzione.

    A questo punto, la finestra Variabili mostra che la matrice args è vuota, e name e currentDate hanno valori predefiniti.

  3. Seleziona Esegui>Eseguire l'istruzione o premi F11.

    Step-Into button

    Visual Studio Code evidenzia la riga successiva.

  4. Seleziona Esegui>Eseguire l'istruzione o premi F11.

    Visual Studio Code esegue Console.WriteLine per la richiesta del nome ed evidenzia la riga di esecuzione successiva. La riga successiva è l'oggetto Console.ReadLine per name. La finestra Variabili è invariata e nella scheda Terminale viene visualizzata la richiesta "Come ti chiami?".

  5. Seleziona Esegui>Eseguire l'istruzione o premi F11.

    Visual Studio evidenzia l'assegnazione della variabile name. La finestra Variabili mostra che name è ancora null.

  6. Rispondi al prompt immettendo una stringa nella scheda Terminale e premendo Invio.

    La scheda Terminale potrebbe non visualizzare la stringa immessa durante l'immissione, ma il metodo Console.ReadLine acquisirà l'input.

  7. Seleziona Esegui>Eseguire l'istruzione o premi F11.

    Visual Studio Code evidenzia l'assegnazione della variabile currentDate. Nella finestra Variabili viene visualizzato il valore restituito dalla chiamata al metodo Console.ReadLine. La scheda Terminale visualizza la stringa immessa al prompt.

  8. Seleziona Esegui>Eseguire l'istruzione o premi F11.

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

  9. Seleziona Esegui>Eseguire l'istruzione o premi F11.

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

  10. Seleziona Esegui>Esci da istruzione/routine o premi Shift+F11.

    Step-Out button

  11. Seleziona la scheda Terminale.

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

  12. Premere un tasto qualsiasi per uscire dal programma.

Usare la configurazione della build di versione

Dopo aver testato la versione di debug dell'applicazione, è necessario compilare e testare anche la versione finale. La versione di rilascio integra le ottimizzazioni del compilatore che possono influire sul comportamento di un'applicazione. Ad esempio, le ottimizzazioni del compilatore progettate per migliorare le prestazioni possono creare scenari di race condition nelle applicazioni multithreading.

Per compilare e testare la versione release dell'applicazione console, apri il Terminale ed esegui il comando seguente:

dotnet run --configuration Release

Risorse aggiuntive

Passaggi successivi

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

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

Prerequisiti

Usare la configurazione della build di debug

Le modalità Debug e Versione sono configurazioni della build predefinite di .NET. Usa la configurazione della build di debug per il debug e la configurazione di versione per la distribuzione della versione finale.

Nella configurazione di 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 di versione di un programma non dispone di informazioni di debug simbolico ed è completamente ottimizzata.

Per impostazione predefinita, le impostazioni di avvio di Visual Studio Code usano la configurazione della build di debug, quindi non è necessario modificarla prima del debug.

  1. Avviare Visual Studio Code.

  2. Apri la cartella del progetto creato in Creare un'applicazione console .NET con Visual Studio Code.

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. Aprire il file Program.cs.

  2. Imposta 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 viene impostato il punto di interruzione visualizzando un punto rosso sul margine sinistro.

    Breakpoint set

Configurare l'input del terminale

Il punto di interruzione si trova dopo una chiamata al metodo Console.ReadLine. La Console di debug non accetta l'input del terminale per un programma in esecuzione. Per gestire l'input del terminale durante il debug, è possibile usare il terminale integrato (una delle finestre di Visual Studio Code) o un terminale esterno. Per questa esercitazione si usa il terminale integrato.

  1. Aprire .vscode/launch.json.

  2. Modificare l'impostazione console da internalConsole a integratedTerminal:

    "console": "integratedTerminal",
    
  3. Salva le modifiche.

Consente di iniziare il debug

  1. Apri la visualizzazione Debug selezionando l'icona Debug nel menu di sinistra.

    Open the Debug tab in Visual Studio Code

  2. Seleziona la freccia verde nella parte superiore del riquadro, accanto a .NET Core Launch (console). Altri modi per avviare il programma in modalità di debug sono premendo F5 o scegliendo Esegui>Avvia debug dal menu.

    Start debugging

  3. Seleziona la scheda Terminale per visualizzare la richiesta "Come ti chiami?" che il programma visualizza prima di attendere una risposta.

    Select the Terminal tab

  4. Immetti una stringa nella finestra Terminale in risposta alla richiesta del nome, quindi premi Invio.

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

    Breakpoint hit, showing Locals

Usare la Console di debug

La finestra Console di debug consente di interagire con l'applicazione in fase di debug. È possibile modificare il valore delle variabili per vedere in che modo tale operazione influisce sul programma.

  1. Seleziona la scheda Console di debug.

  2. Immetti name = "Gracie" nella richiesta nella parte inferiore della finestra Console di debug e premi il tasto Invio.

    Change variable values

  3. Immetti currentDate = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime() nella parte inferiore della finestra Console di debug e premi il tasto Invio.

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

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

    Continue debugging

  5. Seleziona di nuovo la scheda Terminale.

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

    Terminal showing the entered values

  6. Premi 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 testare questo comportamento con una funzionalità di debug utile denominata punto di interruzione condizionale.

  1. Fai clic con il pulsante destro del mouse (tieni premuto Ctrl su macOS) sul punto rosso che rappresenta il punto di interruzione. Nel menu di scelta rapida seleziona Modifica punto di interruzione per aprire una finestra di dialogo che consente di immettere un'espressione condizionale.

    Breakpoint context menu

  2. Seleziona Expression nell'elenco a discesa, immetti l'espressione condizionale seguente e premi Invio.

    String.IsNullOrEmpty(name)
    

    Enter a conditional expression

    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. Avvia il programma con il debug premendo F5.

  4. Nella scheda Terminale, premi il tasto Invio quando ti viene chiesto 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.

    La finestra Variabili mostra che il valore della variabile name è "" o String.Empty.

  5. Verifica che il valore sia una stringa vuota immettendo l'istruzione seguente alla richiesta Console di debug e premendo Invio. Il risultato è true.

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

  7. Seleziona la scheda Terminale, quindi premi un tasto qualsiasi per uscire dal programma e arrestare il debug.

  8. Cancella 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 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.

Scorrere un programma istruzione per istruzione

Visual Studio Code 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 un'istruzione alla volta.

  1. Imposta un punto di interruzione nella parentesi graffa di apertura del metodo Main.

  2. Premere F5 per avviare il debug.

    Visual Studio Code evidenzia la riga del punto di interruzione.

    A questo punto, la finestra Variabili mostra che la matrice args è vuota, e name e currentDate hanno valori predefiniti.

  3. Seleziona Esegui>Eseguire l'istruzione o premi F11.

    Step-Into button

    Visual Studio Code evidenzia la riga successiva.

  4. Seleziona Esegui>Eseguire l'istruzione o premi F11.

    Visual Studio Code esegue Console.WriteLine per la richiesta del nome ed evidenzia la riga di esecuzione successiva. La riga successiva è l'oggetto Console.ReadLine per name. La finestra Variabili è invariata e nella scheda Terminale viene visualizzata la richiesta "Come ti chiami?".

  5. Seleziona Esegui>Eseguire l'istruzione o premi F11.

    Visual Studio evidenzia l'assegnazione della variabile name. La finestra Variabili è deselezionata.

  6. Rispondi al prompt immettendo una stringa nella scheda Terminale e premendo Invio.

    La scheda Terminale potrebbe non visualizzare la stringa immessa durante l'immissione, ma il metodo Console.ReadLine acquisirà l'input.

    Nella finestra Variabili viene visualizzato il valore restituito dalla chiamata al metodo Console.ReadLine.

  7. Seleziona Esegui>Eseguire l'istruzione o premi F11.

    Visual Studio Code evidenzia l'assegnazione della variabile currentDate. La scheda Terminale visualizza la stringa immessa al prompt.

  8. Seleziona Esegui>Eseguire l'istruzione o premi F11.

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

  9. Seleziona Esegui>Eseguire l'istruzione o premi F11.

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

  10. Seleziona Esegui>Esci da istruzione/routine o premi Shift+F11.

    Step-Out button

  11. Seleziona la scheda Terminale.

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

  12. Premere un tasto qualsiasi per uscire dal programma.

Usare la configurazione della build di versione

Dopo aver testato la versione di debug dell'applicazione, è necessario compilare e testare anche la versione finale. La versione di rilascio integra le ottimizzazioni del compilatore che possono influire sul comportamento di un'applicazione. Ad esempio, le ottimizzazioni del compilatore progettate per migliorare le prestazioni possono creare scenari di race condition nelle applicazioni multithreading.

Per compilare e testare la versione release dell'applicazione console, apri il Terminale ed esegui il comando seguente:

dotnet run --configuration Release

Risorse aggiuntive

Passaggi successivi

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