Esercitazione: Eseguire il debug di un'applicazione console .NET con Visual Studio per Mac
Importante
Microsoft ha annunciato il ritiro di Visual Studio per Mac. Visual Studio per Mac non sarà più supportato a partire dal 31 agosto 2024. Le alternative includono:
- Visual Studio Code con C# Dev Kit e le estensioni correlate, ad esempio .NET MAUI e Unity.
- Visual Studio in esecuzione in Windows in una macchina virtuale in Mac.
- Visual Studio in esecuzione in Windows in una macchina virtuale nel cloud.
Per altre informazioni, vedere Annuncio del ritiro di Visual Studio per Mac.
Questa esercitazione presenta gli strumenti di debug disponibili in Visual Studio per Mac.
Prerequisiti
- Questa esercitazione funziona con l'app console creata in Creare un'applicazione console .NET con Visual Studio per Mac.
Usare la configurazione della build di debug
Le modalità Debug e Versione sono configurazioni della build predefinite di Visual Studio. Usare 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, Visual Studio per Mac usa la configurazione della build di debug, quindi non è necessario modificarla prima del debug.
Avviare Visual Studio per Mac.
Aprire il progetto creato in Creare un'applicazione console .NET con Visual Studio per Mac.
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 di debug dell'app:
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.
Impostare un punto di interruzione nella riga che visualizza il nome, la data e l'ora. A tale scopo, posizionare il cursore nella riga di codice e premere ⌘\ (comando+\). Un altro modo per impostare un punto di interruzione consiste nel selezionare Debug>Attiva/Disattiva punto di interruzione dal menu.
Visual Studio indica la riga in cui viene impostato il punto di interruzione evidenziandola e visualizzando un punto rosso sul margine sinistro.
Premere ⌘↵ (comando+INVIO) per avviare il programma in modalità di debug. In alternativa, per avviare il debug scegliere Debug>Avvia debug dal menu.
Immettere una stringa nella finestra del terminale quando il programma chiede di specificare un nome e quindi premere INVIO.
L'esecuzione del programma si arresta quando raggiunge il punto di interruzione e prima che il metodo
Console.WriteLine
venga eseguito.
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 osservarne l'impatto sul programma.
Se la finestra di controllo immediato non è visibile, per visualizzarla scegliere Visualizza>Finestre di debug>Controllo immediato.
Immettere
name = "Gracie"
nella finestra Controllo immediato e premere INVIO.Immettere
currentDate = currentDate.AddDays(1)
nella finestra Controllo immediato e premere INVIO.Si noti che nella finestra Controllo immediato vengono visualizzati il valore della variabile string e le proprietà del valore DateTime.
Nella finestra Variabili locali vengono visualizzati i valori delle variabili definite nel metodo attualmente in esecuzione. I valori delle variabili appena modificate vengono aggiornati nella finestra Variabili locali.
Premere ⌘↵ (comando+INVIO) per continuare il debug.
I valori visualizzati nella finestra del terminale corrispondono alle modifiche apportate nella finestra Controllo immediato.
Se il terminale non è visualizzato, selezionare Terminale - HelloWorld nella barra di spostamento inferiore.
Premere un tasto qualsiasi per uscire dal programma.
Chiudere la finestra del terminale.
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.
Premere CTRL+clic sul punto rosso che rappresenta il punto di interruzione. Nel menu di scelta rapida selezionare Modifica punto di interruzione.
Nella finestra di dialogo Modifica punto di interruzione immettere il codice seguente nel campo che segue E la condizione seguente è True e selezionare Applica.
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.
Premere ⌘↵ (comando+INVIO) per avviare il debug.
Nella finestra del terminale premere INVIO quando viene richiesto di immettere il proprio nome.
Poiché la condizione specificata (
name
ènull
o String.Empty) è stata soddisfatta, l'esecuzione del programma si arresta quando raggiunge il punto di interruzione.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 variabilename
è""
, ovvero String.Empty.È anche possibile osservare che il valore è una stringa vuota immettendo il nome della variabile
name
nella finestra Controllo immediato e premendo INVIO.Premere ⌘↵ (comando+INVIO) per continuare il debug.
Nella finestra del terminale premere un tasto qualsiasi per uscire dal programma.
Chiudere la finestra del terminale.
Cancellare il punto di interruzione facendo clic sul punto nel margine sinistro della finestra del codice. In alternativa, per cancellare un punto di interruzione è possibile scegliere Debug > Attiva/Disattiva punto di interruzione mentre è selezionata la riga di codice.
Scorrere un programma istruzione per istruzione
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 un'istruzione alla volta.
Impostare un punto di interruzione sulla parentesi graffa che contrassegna l'inizio del metodo
Main
(premere comando+\).Premere ⌘↵ (comando+INVIO) per avviare il debug.
Visual Studio si arresta sulla riga con il punto di interruzione.
Premere ⇧⌘I (MAIUSC+comando+I) o selezionare Debug>Esegui istruzione per avanzare di una riga.
Visual Studio evidenzia e visualizza una freccia accanto alla riga di esecuzione successiva.
A questo punto, la finestra Variabili locali mostra che la matrice
args
è vuota, ename
ecurrentDate
hanno valori predefiniti. Visual Studio, inoltre, ha aperto un terminale vuoto.Premere ⇧⌘I (MAIUSC+comando+I).
Visual Studio evidenzia l'istruzione che include l'assegnazione della variabile
name
. La finestra Variabili locali mostra chename
ènull
, e il terminale visualizza la stringa "What is your name?" (Come ti chiami?).Rispondere al prompt immettendo una stringa nella finestra della console e premendo INVIO.
Premere ⇧⌘I (MAIUSC+comando+I).
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. Il terminale visualizza la stringa immessa al prompt.Premere ⇧⌘I (MAIUSC+comando+I).
Nella finestra Variabili locali viene visualizzato il valore della variabile
currentDate
dopo l'assegnazione dalla proprietà DateTime.Now. Il terminale è invariato.Premere ⇧⌘I (MAIUSC+comando+I).
Visual Studio chiama il metodo Console.WriteLine(String, Object, Object). Il terminale visualizza la stringa formattata.
Premere ⇧⌘U (MAIUSC+comando+U) o selezionare Esegui>Esci da istruzione/routine.
Il terminale visualizza un messaggio e attende che venga premuto un tasto.
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 finale incorpora le ottimizzazioni del compilatore che possono influire negativamente 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 finale dell'applicazione console, seguire questa procedura:
Modificare la configurazione della build nella barra degli strumenti da Debug a Versione.
Premere ⌥⌘↵ (opzione+comando+INVIO) per avviare l'esecuzione senza eseguire il debug.
Passaggi successivi
In questa esercitazione sono stati usati gli strumenti di debug di Visual Studio. Nell'esercitazione successiva si pubblicherà una versione distribuibile dell'app.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per