Condividi tramite


Eseguire il debug dei servizi Kubernetes di Azure per ASP.NET usando Snapshot Debugger

Annotazioni

Il debug degli snapshot è stato deprecato e non sarà più disponibile nelle versioni più recenti di Visual Studio 2022 e versioni successive. Anche se non esiste una sostituzione esatta, esistono altri strumenti in grado di fornire una diagnostica utile:

Snapshot Debugger crea uno snapshot delle app in produzione quando viene eseguito il codice a cui si è interessati. Per indicare al debugger di creare uno snapshot, imposta snappoint e logpoint nel codice. Il debugger consente di visualizzare esattamente ciò che è andato storto, senza influire sul traffico dell'applicazione di produzione. Snapshot Debugger consente di ridurre notevolmente il tempo necessario per risolvere i problemi che si verificano negli ambienti di produzione.

I punti di acquisizione snapshot e i punti di inserimento istruzione di registrazione sono simili ai punti di interruzione, ma a differenza dei punti di interruzione, l'applicazione non viene interrotta al raggiungimento dei punti di acquisizione snapshot. In genere, l'acquisizione di uno snapshot in un punto di snappoint richiede 10-20 millisecondi.

In questa esercitazione si eseguiranno le seguenti attività:

  • Avvia il Snapshot Debugger
  • Impostare un punto di riferimento e visualizzare un'istantanea
  • Impostare un punto di log

Prerequisiti

  • Snapshot Debugger per i servizi Azure Kubernetes è disponibile solo per Visual Studio 2019 Enterprise o versione successiva con il carico di lavoro Sviluppo di Azure. (Nella scheda Singoli componenti trovi sotto Debug e test>il Debugger di snapshot.)

    Se non è già installato, installare Visual Studio 2019 Enterprise.

  • La raccolta di snapshot è disponibile per le app Web dei servizi Azure Kubernetes seguenti:

Aprire il progetto e avviare snapshot debugger

  1. Apri il progetto per cui desideri scattare uno snapshot durante il debug.

    Importante

    Per eseguire lo snapshot del debug, è necessario aprire la stessa versione del codice sorgente pubblicata nel servizio Azure Kubernetes.

  2. Scegliere Debug > Collega Snapshot Debugger.... Selezionare la risorsa AKS a cui è distribuita l'app Web e un account di archiviazione di Azure, quindi fare clic su Collega. Snapshot Debugger supporta anche servizio app di Azure e macchine virtuali di Azure e set di scalabilità di macchine virtuali.

    Avviare il debugger di snapshot dal menu Debug

    Selezionare Risorsa di Azure

    Annotazioni

    (Visual Studio 2019 versione 16.2 e successive) Snapshot Debugger ha abilitato il supporto cloud di Azure. Assicurarsi che sia la risorsa di Azure che l'account di archiviazione di Azure selezionati si trovino nello stesso cloud. Contattare l'amministratore di Azure se si hanno domande sulle configurazioni di conformità di Azure dell'organizzazione.

Visual Studio è ora in modalità di debug dello snapshot.

Modalità di debug dello snapshot

La finestra Moduli mostra quando tutti i moduli sono stati caricati per il servizio app di Azure (scegliere Debug > moduli Windows > per aprire questa finestra).

Controllare la finestra Moduli

Impostare un punto di ancoraggio

  1. Nell'editor di codice fare clic sulla barra sinistra accanto a una riga di codice a cui si è interessati per impostare un punto di ancoraggio. Assicurarsi che sia il codice che si sa che verrà eseguito.

    Impostare un punto di ancoraggio

  2. Fare clic su Avvia raccolta per attivare il punto di ancoraggio.

    Attivare il punto di ancoraggio

    Suggerimento

    Non è possibile eseguire passaggi durante la visualizzazione di uno snapshot, ma è possibile inserire più punti di interruzione nel codice per seguire l'esecuzione su diverse righe di codice. Se nel codice sono presenti più snappoint, lo Snapshot Debugger verifica che gli snapshot corrispondenti provengano dalla stessa sessione di un utente finale. Snapshot Debugger esegue questa operazione anche se sono presenti molti utenti che accedono all'app.

Acquisisci un'istantanea

Dopo aver impostato un punto di ancoraggio, è possibile generare manualmente uno snapshot passando alla visualizzazione del browser del sito Web ed eseguendo la riga di codice contrassegnata o attendere che gli utenti generino uno dal relativo utilizzo del sito.

Esaminare i dati dello snapshot

  1. Quando viene raggiunto il punto di ancoraggio, viene visualizzato uno snapshot nella finestra Strumenti di diagnostica. Per aprire questa finestra, scegliere Debug > Windows > Mostra strumenti di diagnostica.

    Aprire un punto di ancoraggio

  2. Fare doppio clic sul punto di ancoraggio per aprire lo snapshot nell'editor di codice.

    Esaminare i dati dello snapshot

    Da questa visualizzazione, è possibile passare il mouse sulle variabili per vedere i DataTips, usare le finestre Variabili locali, Espressioni da osservare, Call Stack e anche valutare le espressioni.

    Il sito Web stesso è ancora attivo e gli utenti finali non sono interessati. Per impostazione predefinita viene acquisito un solo snapshot per ogni punto di ancoraggio: dopo che uno snapshot è stato acquisito, il punto di ancoraggio viene disattivato. Per acquisire un altro snapshot nel punto di ancoraggio, è possibile riattivare il punto di ancoraggio facendo clic su Aggiorna raccolta.

Puoi anche aggiungere più punti di snappaggio alla tua app e attivarli con il pulsante Aggiorna raccolta.

Hai bisogno di aiuto? Vedere le pagine Risoluzione dei problemi e problemi noti e domande frequenti per il debug di snapshot .

Impostare un punto di ancoraggio condizionale

Se è difficile ricreare uno stato specifico nell'app, è consigliabile usare un punto di ancoraggio condizionale. I punti di ancoraggio condizionali consentono di controllare quando creare uno snapshot, ad esempio quando una variabile contiene un valore specifico da controllare. È possibile impostare condizioni usando espressioni, filtri o conteggi.

Per creare un punto di ancoraggio condizionale

  1. Fare clic con il pulsante destro del mouse su un'icona del punto di ancoraggio (sfera vuota) e scegliere Impostazioni.

    Scegliere impostazioni

  2. Nella finestra delle impostazioni del punto di ancoraggio digitare un'espressione.

    Digitare un'espressione

    Nella figura precedente lo snapshot viene acquisito solo per il punto di ancoraggio quando visitor.FirstName == "Dan".

Impostare un punto di log

Oltre a creare uno snapshot quando viene raggiunto un punto di ancoraggio, è anche possibile configurare un punto di ancoraggio per registrare un messaggio, ovvero creare un punto di log. È possibile impostare i punti di log senza dover ridistribuire l'app. I punti di log vengono eseguiti virtualmente e non causano alcun impatto o effetti collaterali per l'applicazione in esecuzione.

Per creare un punto di registrazione

  1. Fare clic con il pulsante destro del mouse su un'icona del punto di ancoraggio (esagono blu) e scegliere Impostazioni.

  2. Nella finestra delle impostazioni del punto di ancoraggio selezionare Azioni.

    Crea un punto di registrazione

  3. Nel campo Messaggio è possibile immettere il nuovo messaggio di log da registrare. È anche possibile valutare le variabili nel tuo messaggio di log inserendole all'interno di parentesi graffe.

    Se si sceglie Invia alla finestra di output, quando viene raggiunto il punto di log, il messaggio viene visualizzato nella finestra Strumenti di diagnostica.

    Dati di Logpoint nella finestra Strumenti di diagnostica

    Se si sceglie Invia al log applicazioni, quando viene raggiunto il punto di log, il messaggio viene visualizzato in qualsiasi punto in cui è possibile visualizzare i messaggi da System.Diagnostics.Trace (o ILogger in .NET Core), ad esempio App Insights.

In questa esercitazione si è appreso come usare snapshot debugger per Azure Kubernetes. È possibile leggere altri dettagli su questa funzionalità.