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
- Questa esercitazione funziona con l'app console creata in Creare un'applicazione console .NET usando Visual Studio Code.
Usare la configurazione della build di debug
Debug e Release sono le 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.
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, le impostazioni di avvio di Visual Studio Code usano la configurazione di compilazione debug, quindi non è necessario modificarla prima del debug.
Avvia Visual Studio Code.
Aprire la cartella del progetto creato in Creare un'applicazione console .NET usando Visual Studio Code.
Impostare un punto di interruzione
Un punto di interruzione interrompe temporaneamente l'esecuzione dell'applicazione prima dell'esecuzione della riga con il punto di interruzione.
Aprire il file Program.cs.
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.
Avviare il debug
Aprire la visualizzazione Debug selezionando l'icona Debug nel menu a sinistra.
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.
Se viene chiesto di Selezionare Configurazione di avvio, selezionare C#: HelloWorld HelloWorld.
Selezionare la scheda console di debug per visualizzare la richiesta "Qual è il tuo nome?" del programma prima di attendere una risposta.
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.
Usare la console di debug
La finestra console di debug
Selezionare la scheda Console di Debug.
Immettere
name = "Gracie"
al prompt nella parte inferiore della finestra Console di Debug e premere INVIO.Immettere
nella parte inferiore della finestra della Console debug e premere invio .Nella finestra Variabili
vengono visualizzati i nuovi valori delle variabili e . Continuare l'esecuzione del programma selezionando il pulsante Continua nella barra degli strumenti. Un altro modo per continuare consiste nel premere F5.
I valori visualizzati nella finestra della console corrispondono alle modifiche apportate nella Console di debug.
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 .
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.
Selezionare
Expression
nell'elenco a discesa, immettere l'espressione condizionale seguente e premere INVIO.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 restituiscetrue
.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 ad attributi quali identificatore di thread, nome del processo o nome del thread.
Avviare il programma con il debug premendo F5.
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 metodoConsole.WriteLine
.Nella finestra Variabili , viene indicato che il valore della variabile
name
è""
o String.Empty.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
Seleziona il pulsante Continua sulla barra degli strumenti per continuare l'esecuzione del programma.
Premere INVIO per uscire dal programma e arrestare il debug.
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.
Se viene visualizzato un avviso che indica che la condizione del punto di interruzione andrà persa, seleziona Rimuovi punto di interruzione.
Eseguire passo a passo un programma
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.
Impostare un punto di interruzione sulla parentesi graffa di apertura del metodo
Main
.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. Selezionare Esegui>Procedi oppure premere F11.
Visual Studio Code evidenzia la riga successiva.
Selezionare Esegui>Passo Dentro oppure premere F11.
Visual Studio Code esegue
Console.WriteLine
per il prompt di immissione del nome ed evidenzia la riga di esecuzione successiva. La riga successiva è laConsole.ReadLine
per ilname
. La finestra Variabili è invariata e nella scheda Terminale viene visualizzato il prompt "Qual è il tuo nome?".Seleziona Esegui>Passo oppure premi F11.
Visual Studio evidenzia l'assegnazione della variabile
name
. La finestra Variabili mostra chename
è ancoranull
.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.
Selezionare Esegui>Passo In oppure premere F11.
Visual Studio Code evidenzia l'assegnazione della variabile
currentDate
. Nella finestra Variabiliviene visualizzato il valore restituito dalla chiamata al metodo terminale. Nella scheda viene visualizzata la stringa immessa al prompt. Seleziona Esegui>Passa all'interno oppure premi F11.
Nella finestra Variabili viene visualizzato il valore della variabile
currentDate
dopo l'assegnazione dalla proprietà DateTime.Now.Selezionare Esegui>Passa all'interno oppure premere F11.
Visual Studio Code chiama il metodo Console.WriteLine(String, Object, Object). Nella finestra della console viene visualizzata la stringa formattata.
Selezionare Esegui>Passaggio oppure premere Maiusc+F11.
Il terminale visualizza "Premere qualsiasi tasto per uscire..."
Premere un tasto qualsiasi per uscire dal programma.
Usare la configurazione della build di Release
Dopo aver testato la versione di debug dell'applicazione, è necessario compilare e testare anche la versione release. La versione release incorpora 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 condizioni di gara nelle applicazioni multithread.
Per compilare e testare la versione release dell'applicazione console, aprire il terminale
dotnet run --configuration Release
Risorse aggiuntive
Passaggi successivi
In questa esercitazione sono stati usati gli strumenti di debug di Visual Studio Code. Nel prossimo tutorial, pubblicherai una versione distribuibile dell'app.