Esaminare le opzioni di configurazione dei punti di interruzione
- 6 minuti
I debugger consentono di analizzare il codice ed è possibile usarli per controllare l'esecuzione del runtime del programma. Quando si avvia il debugger di Visual Studio Code, inizia immediatamente l'esecuzione del codice. Poiché il codice viene eseguito in microsecondi, l'efficacia del debug del codice dipende dalla possibilità di sospendere il programma in corrispondenza di qualunque istruzione. I punti di interruzione consentono di specificare dove sospendere l'esecuzione del codice.
Impostare i punti di interruzione
Visual Studio Code offre diversi modi per configurare punti di interruzione nel codice. Per esempio:
- Editor di codice: è possibile impostare un punto di interruzione nell'editor di Visual Studio Code facendo clic nella colonna a sinistra di un numero di riga.
- Menu Esegui: è possibile attivare/disattivare un punto di interruzione dal menu Esegui. La riga di codice corrente nell'editor specifica dove applicare l'azione Attiva/Disattiva punto di interruzione.
Quando si imposta un punto di interruzione, nell'editor viene visualizzato un cerchio rosso a sinistra del numero di riga. Quando si esegue il codice nel debugger, l'esecuzione viene sospesa in corrispondenza del punto di interruzione.
Rimuovere, disabilitare e abilitare punti di interruzione
Dopo aver impostato i punti di interruzione nell'applicazione e averli usati per isolare un problema, è possibile che si voglia rimuoverli o disabilitarli.
Per rimuovere un punto di interruzione, ripetere l'azione eseguita per impostare un punto di interruzione. Ad esempio, fare clic sul cerchio rosso a sinistra del numero di riga o usare l'opzione di attivazione/disattivazione nel menu Esegui.
Può essere utile mantenere la posizione di un punto di interruzione senza attivarlo durante la sessione di debug successiva. Visual Studio Code consente di "disabilitare" un punto di interruzione invece di rimuoverlo completamente. Per disabilitare un punto di interruzione attivo, fare clic con il pulsante destro del mouse sul punto rosso a sinistra del numero di riga e quindi scegliere Disabilita punto di interruzione dal menu di scelta rapida.
Quando si disabilita un punto di interruzione, il punto rosso a sinistra del numero di riga si trasforma in un punto grigio.
Annotazioni
Il menu di scelta rapida visualizzato quando si fa clic con il pulsante destro del mouse su un punto di interruzione include anche le opzioni Rimuovi punto di interruzione per eliminarlo e Modifica punto di interruzione. L'opzione Modifica punto di interruzione viene esaminata nella sezione Punti di interruzione condizionali e punti di inserimento istruzione di registrazione più avanti in questa unità.
Oltre che per la gestione di singoli punti di interruzione nell'editor, il menu Esegui offre opzioni per eseguire operazioni in blocco su tutti i punti di interruzione:
- Abilita tutti i punti di interruzione: usare questa opzione per abilitare tutti i punti di interruzione disabilitati.
- Disabilita tutti i punti di interruzione: usare questa opzione per disabilitare tutti i punti di interruzione.
- Rimuovi tutti i punti di interruzione: usare questa opzione per rimuovere tutti i punti di interruzione. Vengono rimossi sia i punti di interruzione abilitati che quelli disabilitati.
Punti di interruzione condizionali
Un punto di interruzione condizionale è un tipo speciale di punto di interruzione che viene attivato solo quando viene soddisfatta una condizione specificata. Ad esempio, è possibile creare un punto di interruzione condizionale che sospende l'esecuzione quando una variabile denominata numItems è maggiore di 5.
Si è già visto che facendo clic con il pulsante destro del mouse su un punto di interruzione viene aperto un menu di scelta rapida che include l'opzione Modifica punto di interruzione. Selezionando Modifica punto di interruzione è possibile trasformare un punto di interruzione standard in un punto di interruzione condizionale.
Oltre a modificare un punto di interruzione esistente, è anche possibile impostare direttamente un punto di interruzione condizionale. Se si fa clic con il pulsante destro del mouse (anziché con il sinistro) per impostare un nuovo punto di interruzione, è possibile scegliere di creare un punto di interruzione condizionale.
Quando si crea un punto di interruzione condizionale, è necessario specificare un'espressione che rappresenta la condizione.
Ogni volta che il debugger rileva il punto di interruzione condizionale, valuta l'espressione. Se l'espressione restituisce true, il punto di interruzione viene attivato e l'esecuzione viene sospesa. Se l'espressione restituisce false, l'esecuzione continua come se il punto di interruzione non fosse presente.
Si supponga, ad esempio, di dover eseguire il debug del codice all'interno del blocco di codice di un ciclo for. Si è notato che il problema di cui si sta eseguendo il debug si verifica solo dopo che il ciclo ha completato diverse iterazioni. Si decide di attivare il punto di interruzione quando la variabile di controllo dell'iterazione del ciclo i è maggiore di tre. Si crea un punto di interruzione condizionale e si specifica l'espressione i > 3.
Quando si esegue il codice nel debugger, il punto di interruzione viene ignorato fino all'iterazione quando i > 3 non restituisce true. Quando i = 4, l'esecuzione viene sospesa in corrispondenza del punto di interruzione condizionale.
Supporto per punti di interruzione Hit Count e Logpoints
Il debugger C# per Visual Studio Code supporta anche punti di interruzione Hit Count e Logpoints.
Un punto di interruzione Hit Count (numero di passaggi) consente di specificare il numero di volte che un punto di interruzione deve essere rilevato prima che venga sospesa l'esecuzione. È possibile specificare un valore Hit Count durante la creazione di un nuovo punto di interruzione, con l'azione Aggiungi punto di interruzione condizionale, oppure quando si modifica un punto di interruzione esistente con l'azione Modifica condizione. In entrambi i casi verrà visualizzata una casella di testo in linea con un menu a discesa in cui è possibile immettere il valore del numero di passaggi.
Un "Logpoint" (punto di inserimento istruzione di registrazione) è una variante di punto di interruzione che non interrompe il debugger, ma registra un messaggio nella console. I punti di inserimento istruzione di registrazione sono particolarmente utili per inserire la registrazione durante il debug degli ambienti di produzione che non possono essere sospesi o arrestati. Un punto di inserimento istruzione di registrazione è rappresentato da un'icona a forma di rombo anziché da un cerchio pieno. I messaggi di log sono in testo normale, ma possono includere espressioni da valutare tra parentesi graffe ('{}').
I punti di inserimento istruzione di registrazione possono includere un'espressione condizionale e/o un valore di numero di passaggi per controllare ulteriormente quando generare i messaggi di registrazione. Ad esempio, si può combinare un messaggio punto di inserimento istruzione di registrazione i = {i} con la condizione Hit Count >4 per generare messaggi di log come indicato di seguito:
Riepilogo
Ecco i concetti più importanti di questa unità da ricordare:
- Visual Studio Code consente di impostare punti di interruzione nell'editor di codice o dal menu Esegui. Le righe di codice con un punto di interruzione sono contrassegnate da un punto rosso a sinistra del numero di riga.
- I punti di interruzione possono essere rimossi o disabilitati usando le stesse opzioni usate per impostarli. Nel menu Esegui sono disponibili operazioni in blocco che influiscono su tutti i punti di interruzione.
- I punti di interruzione condizionali possono essere usati per sospendere l'esecuzione quando viene soddisfatta una condizione specificata o quando viene raggiunto un determinato numero di passaggi.
- I punti di inserimento istruzione di registrazione possono essere usati per registrare informazioni nel terminale senza sospendere l'esecuzione o inserire codice.
Verificare le proprie conoscenze
Commenti e suggerimenti
Questa pagina è stata utile?
No
Serve aiuto con questo argomento?
Provare a usare Ask Learn per chiarire o guidare l'utente in questo argomento?