Condividi tramite


Eseguire il debug di app ASP.NET live su Azure usando il Snapshot Debugger

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 è disponibile solo a partire da Visual Studio 2017 Enterprise versione 15.5 o 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. Se si esegue l'aggiornamento da un'installazione precedente di Visual Studio, eseguire il programma di installazione di Visual Studio e controllare il componente Snapshot Debugger nel carico di lavoro ASP.NET e sviluppo Web.

  • Piano di servizio app di Azure di base o superiore.

  • La raccolta di snapshot è disponibile per le app Web seguenti in esecuzione nel servizio app di Azure:

    • ASP.NET applicazioni in esecuzione in .NET Framework 4.6.1 o versione successiva.
    • Applicazioni ASP.NET Core in esecuzione su .NET Core 2.0 o versione successiva su Windows.

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 app di Azure.

  2. Scegliere Debug > Collega snapshot Debugger.... Selezionare il servizio app di Azure in cui viene distribuito il progetto e un account di archiviazione di Azure e quindi fare clic su Connetti. Snapshot Debugger supporta anche il servizio Azure Kubernetes e le macchine virtuali di Azure e i set di scalabilità di macchine virtuali.

    Avviare il debugger di snapshot dal menu Debug

    Selezionare Risorsa di Azure

    Importante

    La prima volta che si seleziona Collega snapshot debugger, viene richiesto di installare l'estensione del sito Snapshot Debugger nel servizio app di Azure. Questa installazione richiede un riavvio del servizio app 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 i servizi app. È possibile leggere altri dettagli su questa funzionalità.