Condividi tramite


Eseguire il debug di app ASP.NET attive in macchine virtuali di Azure e set di scalabilità di macchine virtuali di Azure con 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, impostare punti di ancoraggio e punti di registrazione nel codice. Il debugger consente di vedere esattamente cosa non ha funzionato, senza alcun impatto sul traffico dell'applicazione di produzione. Snapshot Debugger può essere utile per 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. L'acquisizione di uno snapshot in un punto di acquisizione snapshot richiede in genere 10-20 millisecondi.

Questa esercitazione illustra come:

  • Avviare Snapshot Debugger
  • Impostare un punto di acquisizione snapshot e visualizzare uno snapshot
  • Impostare un punto di inserimento istruzione di registrazione

Prerequisiti

  • Snapshot Debugger per Azure Macchine virtuali (VM) e Azure set di scalabilità di macchine virtuali è disponibile solo per Visual Studio 2019 Enterprise o versione successiva con il carico di lavoro Sviluppo di Azure. (Nella scheda Singoli componenti in Debug e test>Snapshot Debugger.)

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

  • La raccolta di snapshot è disponibile per le app Web di Azure Macchine virtuali\set di scalabilità di macchine virtuali seguenti:

    • Applicazioni ASP.NET in esecuzione in .NET Framework 4.6.1 o versioni successive.
    • Applicazioni ASP.NET Core in esecuzione in .NET Core 2.0 o versioni successive in Windows.

    Nota

    Visual Studio Enterprise in esecuzione in Windows a 32 bit non sarà in grado di visualizzare gli snapshot.

Aprire il progetto e avviare Snapshot Debugger

  1. Aprire il progetto di cui si vuole eseguire il debug di snapshot.

    Importante

    Per eseguire lo snapshot del debug, è necessario aprire la stessa versione del codice sorgente pubblicata nel servizio Macchina virtuale di Azure\Set di scalabilità di macchine virtuali.

  2. Scegliere Debug > Collega snapshot Debugger.... Selezionare la macchina virtuale di Azure\Set di scalabilità di macchine virtuali in cui viene distribuita l'app Web e un account di archiviazione di Azure e quindi fare clic su Connetti. Snapshot Debugger supporta anche servizio Azure Kubernetes e app Azure Servizio.

    Launch the snapshot debugger from the Debug menu

    Select Azure Resource

    Importante

    La prima volta che si seleziona Collega Snapshot Debugger per la macchina virtuale, viene automaticamente riavviato IIS. La prima volta che si seleziona Collega snapshot Debugger per il set di scalabilità di macchine virtuali, è necessario eseguire l'aggiornamento manuale di ogni istanza del set di scalabilità di macchine virtuali.

    Nota

    (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 Archiviazione di Azure selezionato si trovino nello stesso cloud. Contattare l'amministratore di Azure se si hanno domande sulle configurazioni di conformità di Azure dell'organizzazione.

    I metadati per i moduli non verranno inizialmente attivati, passano all'app Web e il pulsante Avvia raccolta diventerà attivo. Visual Studio è ora in modalità debug di snapshot.

    Snapshot debugging mode

    Nota

    Per il set di scalabilità di macchine virtuali, l'utente deve aggiornare manualmente le istanze nel proprio set di scalabilità di macchine virtuali dopo aver collegato snapshot debugger per la prima volta.

    La finestra Moduli mostra quando tutti i moduli sono stati caricati per la macchina virtuale di Azure\Set di scalabilità di macchine virtuali (scegliere Debug > moduli Windows > per aprire questa finestra).

    Check the Modules window

Impostare un punto di acquisizione snapshot

  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.

    Set a snappoint

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

    Turn on the snappoint

    Suggerimento

    Non è possibile eseguire il codice passaggio per passaggio quando si visualizza uno snapshot, ma è possibile inserire più punti di acquisizione snapshot nel codice per seguire l'esecuzione in corrispondenza di righe diverse del codice. Se il codice include più punti di acquisizione snapshot, Snapshot Debugger si assicura che gli snapshot corrispondenti provengano dalla stessa sessione dell'utente finale. Snapshot Debugger esegue questa verifica anche se l'app è usata da molti utenti.

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 acquisizione snapshot, nella finestra Strumenti di diagnostica viene visualizzato uno snapshot. Per aprire questa finestra, scegliere Debug di Windows Show Diagnostic Tools .To open this window, choose Debug > Windows > Show Diagnostic Tools.

    Open a snappoint

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

    Inspect snapshot data

    Da questa visualizzazione, è possibile passare il mouse sulle variabili per visualizzare i suggerimenti dati, usare le finestre Variabili locali, Espressioni di controllo e Stack di chiamate e anche valutare le espressioni.

    Il sito Web stesso è ancora attivo e gli utenti finali non sono interessati. Viene acquisito un solo snapshot per ogni punto di acquisizione snapshot per impostazione predefinita. Dopo l'acquisizione, il punto di acquisizione snapshot viene disattivato. Se si vuole acquisire un altro snapshot in corrispondenza del punto di acquisizione snapshot, è possibile riattivare il punto di acquisizione snapshot facendo clic su Aggiorna raccolta.

È anche possibile aggiungere ulteriori punti di acquisizione snapshot all'app e attivarli con il pulsante Aggiorna raccolta.

Hai bisogno di assistenza? Vedere le pagine Risoluzione dei problemi e problemi noti e Domande frequenti sul debug di snapshot.

Impostare un punto di acquisizione snapshot 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 le condizioni usando espressioni, filtri o numeri di passaggi.

Per creare un punto di acquisizione snapshot condizionale

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

    Choose Settings

  2. Digitare un'espressione nella finestra Impostazioni punto di acquisizione snapshot.

    Type an expression

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

Impostare un punto di inserimento istruzione di registrazione

Oltre ad acquisire uno snapshot quando viene raggiunto un punto di acquisizione snapshot, è anche possibile configurare un punto di acquisizione snapshot per la registrazione di un messaggio, ovvero per creare un punto di inserimento istruzione di registrazione. È possibile impostare punti di inserimento istruzione di registrazione senza dover ridistribuire l'app. I punti di inserimento istruzione di registrazione vengono eseguiti in modo virtuale senza impatto o effetti collaterali sull'applicazione in esecuzione.

Per creare un punto di inserimento istruzione di registrazione

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

  2. Selezionare Azioni nella finestra Impostazioni punto di acquisizione snapshot.

    Create a logpoint

  3. Nel campo Messaggio è possibile immettere il nuovo messaggio di log che si vuole registrare. È anche possibile valutare le variabili nel messaggio di log, racchiudendole all'interno di parentesi graffe.

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

    Logpoint data in the Diagnostic Tools window

    Se si sceglie Invia al log applicazioni, quando viene raggiunto il punto di inserimento istruzione di registrazione, il messaggio viene visualizzato ovunque sia possibile vedere 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 le macchine virtuali di Azure e i set di scalabilità di macchine virtuali di Azure. Sono disponibili altre informazioni su questa funzionalità.