Share via


Debug con Visual Studio per Mac

Importante

Visual Studio per Mac è pianificato per il ritiro il 31 agosto 2024 in conformità ai criteri moderni relativi al ciclo di vita di Microsoft. Anche se è possibile continuare a usare Visual Studio per Mac, esistono diverse altre opzioni per gli sviluppatori in Mac, ad esempio la versione di anteprima della nuova estensione C# Dev Kit per VS Code.

Altre informazioni sulle sequenze temporali e sulle alternative di supporto.

Visual Studio per Mac include debugger con supporto per applicazioni .NET Core, .NET Framework, Unity e Xamarin.

Visual Studio per Mac usa il debugger Mono Soft, implementato nel runtime di Mono, per eseguire il debug di codice gestito in tutte le piattaforme.

Debugger

Visual Studio per Mac usa il debugger Mono Soft per eseguire il debug di codice gestito (C# r F#) in tutte le applicazioni Xamarin. Il debugger Mono Soft è diverso dai normali debugger in quanto si tratta di un debugger cooperativo integrato nel runtime mono; il codice generato e il runtime Mono collaborano con l'IDE per offrire un'esperienza di debug. Il runtime di Mono espone la funzionalità di debug tramite un protocollo di rete, su cui è possibile leggere altre informazioni nella documentazione di Mono.

I debugger rigidi, ad esempio LLDB o GDB, controllano un programma senza la conoscenza o la cooperazione del programma sottoposto a debug. Può comunque essere utile durante il debug di applicazioni Xamarin se è necessario eseguire il debug di codice iOS o Android nativo.

Per le applicazioni .NET Core e ASP.NET Core, Visual Studio per Mac usa il debugger .NET Core. Questo debugger è anche un debugger cooperativo e funziona con il runtime .NET.

Uso del debugger

Per avviare il debug di qualsiasi applicazione, assicurarsi sempre che la configurazione sia impostata su Debug. La configurazione di debug offre un utile set di strumenti per il supporto del debug, come l'impostazione di punti di interruzione, l'uso di visualizzatori di dati e la visualizzazione dello stack di chiamate:

Debug configuration

Impostazione di un punto di interruzione

Per impostare un punto di interruzione nell'IDE, fare clic sull'area del margine nell'editor, accanto al numero di riga del codice in cui si vuole applicare l'interruzione:

Setting breakpoint in margin

È possibile visualizzare tutti i punti di interruzione impostati nel codice passando alla finestra Punti di interruzione:

List of breakpoints

Consente di iniziare il debug

Per avviare il debug, selezionare il browser di destinazione, il dispositivo o il simulatore/emulatore:

Debug configurationSelect target device

Distribuire quindi l'applicazione premendo il pulsante Esegui o Comando+INVIO. Quando si raggiunge un punto di interruzione, il codice viene evidenziato in giallo:

Highlight showing breakpoint has been hit

A questo punto, è possibile usare strumenti di debug, come quello usato per esaminare i valori degli oggetti, per ottenere altre informazioni su quello che accade nel codice:

Debug visualizations

Punti di interruzione condizionali

È anche possibile impostare regole che determinano le circostanze in cui deve verificarsi un punto di interruzione. Questa operazione è nota come aggiunta di un punto di interruzione condizionale. Per impostare un punto di interruzione condizionale, accedere alla finestra Proprietà punto di interruzione in uno dei due modi seguenti:

  • Per aggiungere un nuovo punto di interruzione condizionale, fare clic con il pulsante destro del mouse sul margine dell'editor, a sinistra del numero di riga per il codice in cui si vuole impostare il punto di interruzione, e quindi scegliere Nuovo punto di interruzione:

Breakpoint context menu

  • Per aggiungere una condizione a un punto di interruzione esistente, fare clic con il pulsante destro del mouse sul punto di interruzione e selezionare Proprietà punto di interruzione oppure, nella finestra Punti di interruzione, selezionare il pulsante Modifica punto di interruzione illustrato di seguito:

Edit existing Breakpoint in Breakpoints Window

È quindi possibile immettere la condizione in base alla quale deve essere aggiunto il punto di interruzione:

Edit Breakpoint conditions

Esecuzione di codice istruzione per istruzione

Quando viene raggiunto un punto di interruzione, lo strumento di debug permette di ottenere il controllo sull'esecuzione del programma. Visual Studio per Mac visualizza quattro pulsanti, per eseguire e scorrere il codice. In Visual Studio per Mac avranno un aspetto simile al seguente:

Buttons to step through code

Ecco i quattro pulsanti:

  • Esegui: avvia l'esecuzione del codice, fino al punto di interruzione successivo.
  • Esegui istruzione/routine: esegue la riga di codice successiva. Se la riga successiva è una chiamata di funzione, il pulsante esegue la funzione e si ferma alla riga di codice successiva, dopo la funzione.
  • Esegui istruzione: anche questo pulsante esegue la riga di codice successiva. Se la riga successiva è una chiamata di funzione, il pulsante si ferma alla prima riga della funzione, permettendo di continuare a eseguire il debug della funzione riga per riga. Se la riga successiva non è una funzione, avrà lo stesso comportamento di Step Over.
  • Esci da istruzione/routine: torna alla riga in cui è stata chiamata la funzione corrente.

Modificare l'istruzione eseguita successivamente

Mentre il debugger è sospeso, una freccia nel margine indica la riga di codice successiva che verrà eseguita. È possibile selezionare e trascinare la freccia su una riga di codice diversa per modificare l'istruzione che verrà eseguita. È possibile ottenere la stessa operazione facendo clic con il pulsante destro del mouse su una riga di codice e scegliendo Imposta istruzione successiva dal menu di scelta rapida.

Drag and drop arrow to set next statement

Attenzione

La modifica della riga di esecuzione corrente può causare comportamenti imprevisti in un'applicazione. Esistono anche alcune condizioni in cui non è possibile modificare l'istruzione successiva da eseguire. Ad esempio, il trascinamento della freccia da un metodo a un altro non funzionerà. In questi casi non supportati, Visual Studio per Mac visualizzerà una finestra di dialogo per segnalare che non era possibile modificare la riga di esecuzione corrente.

Debug di librerie di classi di Mono

I prodotti Xamarin vengono forniti con il codice sorgente per le librerie di classi di Mono, che può essere usato per eseguire istruzioni passo a passo dal debugger ed esaminare il funzionamento sottostante.

Poiché questa funzionalità usa più memoria durante il debug, è disattivata per impostazione predefinita.

Per abilitare questa funzionalità, passare a Visual Studio per Mac > Preferences > Debugger e assicurarsi che l'opzione "Esegui istruzione in codice esterno" sia selezionata, come illustrato di seguito:

Step into external code option

Vedi anche