Condividi tramite


Eseguire il debug di un servizio Servizi cloud di Azure (supporto esteso) in Visual Studio

Visual Studio offre diverse opzioni per il debug di Servizi cloud di Azure (supporto esteso) e macchine virtuali.

Prerequisiti

Eseguire il debug del servizio cloud nel computer locale

È possibile risparmiare tempo e denaro usando l'emulatore di calcolo di Azure per eseguire il debug del servizio cloud in un computer locale. Eseguendo il debug di un servizio in locale prima di distribuirlo, è possibile migliorare l'affidabilità e le prestazioni senza pagare il tempo di calcolo. Tuttavia, alcuni errori possono verificarsi solo quando si esegue un servizio cloud in Azure stesso. È possibile eseguire il debug di questi errori se si abilita il debug remoto quando si pubblica il servizio e quindi si collega il debugger a un'istanza del ruolo.

L'emulatore simula il servizio di calcolo di Azure ed è in esecuzione nell'ambiente locale in modo da poter testare ed eseguire il debug del servizio cloud prima di distribuirlo. L'emulatore gestisce il ciclo di vita delle istanze del ruolo e fornisce l'accesso alle risorse simulate, ad esempio l'archiviazione locale. Quando si esegue il debug o si esegue il servizio da Visual Studio, avvia automaticamente l'emulatore come applicazione in background e quindi distribuisce il servizio nell'emulatore. È possibile usare l'emulatore per visualizzare il servizio quando viene eseguito nell'ambiente locale. È possibile eseguire la versione completa o la versione rapida dell'emulatore. Consultare Uso dell'emulatore Express per eseguire e fare il debug di un servizio cloud in locale.

Per eseguire il debug del servizio cloud nel computer locale

  1. Nella barra dei menu selezionare Debug>Avvia debug per eseguire il progetto servizi cloud di Azure (supporto esteso). In alternativa, è possibile premere F5. Verrà visualizzato un messaggio che informa che l'emulatore di calcolo sta avviando. All'avvio dell'emulatore, l'icona della barra delle applicazioni conferma.

    emulatore di Azure nell'area di notifica

  2. Visualizzare l'interfaccia utente per l'emulatore di calcolo aprendo il menu di scelta rapida per l'icona di Azure nell'area di notifica e quindi selezionare Mostra interfaccia utente dell'emulatore di calcolo.

    Il riquadro sinistro dell'interfaccia utente mostra i servizi attualmente distribuiti nell'emulatore di calcolo e le istanze del ruolo in cui è in esecuzione ogni servizio. È possibile scegliere il servizio o i ruoli per visualizzare il ciclo di vita, la registrazione e le informazioni di diagnostica nel riquadro destro. Quando si mette il focus nel margine superiore di una finestra inclusa, essa si espande per riempire il riquadro destro.

  3. Esaminare l'applicazione scegliendo i comandi nel menu Debug e impostando punti di interruzione nel codice. Durante l'esecuzione dell'applicazione nel debugger, i riquadri vengono aggiornati con lo stato corrente dell'applicazione. Quando si arresta il debug, la distribuzione dell'applicazione viene eliminata. Se l'applicazione include un ruolo Web e la proprietà Azione di avvio è stata impostata per avviare il Web browser, Visual Studio avvia l'applicazione Web nel browser. Se si modifica il numero di istanze di un ruolo nella configurazione del servizio, è necessario arrestare il servizio cloud e riavviare il debug in modo da poter eseguire il debug di queste nuove istanze del ruolo.

    Nota

    Quando si arresta l'esecuzione o il debug del servizio, l'emulatore di calcolo locale e l'emulatore di archiviazione non vengono arrestati. È necessario disattivarli esplicitamente dall'area di notifica.

Eseguire il debug di un servizio cloud in Azure

Se si abilita il debug remoto per un servizio cloud usando la procedura descritta in questa sezione, non presenta prestazioni ridotte o comporta costi aggiuntivi. Non usare il debug remoto in un servizio di produzione, perché i client che usano il servizio potrebbero essere influenzati negativamente.

Per abilitare il debug remoto per un servizio cloud (supporto esteso)

  1. Aggiungere un endpoint al ServiceDefinition.csdef per la porta msvsmon predefinita. Per Visual Studio 2019, è 4024.

    <Endpoints>
       <InputEndpoint name="RemoteDebug" protocol="tcp" port="4024" localPort="4024" />
    </Endpoints>
    

    Nota

    Altre versioni di Visual Studio hanno porte diverse assegnazioni delle porte del debugger remoto.

  2. Apri il menu di scelta rapida per il progetto di Azure e poi seleziona Pubblica.

  3. Selezionare l'ambiente di staging e la configurazione di debug.

    Questa è solo una linea guida. È possibile scegliere di eseguire gli ambienti di test in un ambiente di produzione. Tuttavia, è possibile influire negativamente sugli utenti se si abilita il debug remoto nell'ambiente di produzione. È possibile scegliere la configurazione di rilascio, ma la configurazione di debug semplifica il debug.

    Scegliere la configurazione di debug.

  4. Seguire i normali passaggi descritti in Servizi cloud (supporto esteso), ma selezionare la casella di controllo Abilita Desktop remoto per tutti i ruoli.

    Verrà chiesto di creare un nome utente e una password per l'utente desktop remoto, che sarà necessario in un secondo momento per accedere a tale macchina virtuale.

  5. Passare alla schermata successiva, esaminare le impostazioni e, quando si è pronti, fare clic su Pubblica e attendere il completamento della distribuzione.

  6. Accedere a portale di Azure e passare al servizio cloud (supporto esteso) di cui si vuole eseguire il debug.

  7. Scegliere ruoli e istanze nel riquadro sinistro, quindi scegliere il ruolo a cui si è interessati per eseguire il debug in remoto.

  8. Fare clic su Connetti nella finestra popup Istanza del ruolo a destra e scegliere il pulsante Connetti per scaricare un file desktop remoto che consentirà di accedere alla macchina virtuale. Accedi con le credenziali che hai creato quando hai abilitato Desktop Remoto in un passaggio precedente.

    Screenshot che mostra il popup dell'istanza ruolo con l'opzione Connetti.

  9. Nella macchina virtuale di Azure remota installare gli strumenti remoti di Visual Studio 2019, come descritto in Debug remoto.

  10. Dal desktop nella macchina virtuale eseguire il comando D:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Remote Debugger\x64\msvsmon.exe. Assicurarsi di eseguire come amministratore.

  11. Accettare le richieste per consentire l'accesso tramite il firewall. Verrà visualizzato un messaggio che indica che msvsmon.exe ha iniziato ad ascoltare le connessioni.

  12. Nel portale di Azure aprire il gruppo di risorse e ottenere l'indirizzo IP pubblico per il servizio cloud (supporto esteso).

    Screenshot che mostra dove trovare l'indirizzo IP pubblico per il servizio cloud.

Per collegare il debugger a un servizio cloud (supporto esteso) in Azure

Nota

Quando possibile, è consigliabile eseguire il debug con la configurazione debug scelta nel processo di pubblicazione , tuttavia, se si esegue il debug di una configurazione versione, in Visual Studio usare CTRL+Q per cercare "Just My Code" e deselezionare Abilita Just My Code in Tools>Opzioni>Debugger>Generale. Le build di rilascio sono ottimizzate e pertanto non sono considerate "Codice personale".

  1. Scegliere Debug>Collega al Processo oppure premere Ctrl+Alt+P.

  2. Mantenere il tipo di connessione predefinito.

  3. Immettere la destinazione di connessione usando l'indirizzo IP e la porta: {ipaddress}:4024.

  4. Impostare per collegare a su automatico.

  5. Accedere usando le stesse credenziali dell'utente desktop remoto.

  6. Selezionare Mostra processo per tutti gli utenti. Se si deve fare il debug di un ruolo di lavoro, collegarsi a WaWorkerHost.exe; per il debug di un ruolo Web, collegarsi al processo di w3wp.exe; per un ruolo di API Web, collegarsi al processo WaIISHost.exe.

  7. Impostare i punti di interruzione (passare alla riga e premere F9), accedere all'URL pubblico del sito e riprodurre lo scenario per il debug.

Per abilitare il debug remoto per un servizio cloud (supporto esteso)

  1. Aggiungere un endpoint al ServiceDefinition.csdef per la porta msvsmon predefinita. Per Visual Studio 2022, ovvero 4026; per Visual Studio 2019, è 4024.

    <Endpoints>
       <InputEndpoint name="RemoteDebug" protocol="tcp" port="4026" localPort="4026" />
    </Endpoints>
    

    Nota

    Altre versioni di Visual Studio hanno porte diverse assegnazioni di porte del debugger remoto.

  2. Se si ha come destinazione .NET 4.8, assicurarsi di aprire il file ServiceConfiguration.Cloud.cscfg e controllare il valore dell'attributo osFamily nell'elemento ServiceConfiguration durante la pubblicazione di Servizi cloud (supporto esteso). Per un progetto .NET 4.8, usare osFamily="7".

  3. Aprire il menu di scelta rapida per il progetto di Azure e quindi selezionare Pubblica.

  4. Selezionare l'ambiente di gestione temporanea e la configurazione debug.

    Questa è solo una linea guida. È possibile scegliere di eseguire gli ambienti di test in un ambiente di produzione. Tuttavia, è possibile influire negativamente sugli utenti se si abilita il debug remoto nell'ambiente di produzione. È possibile scegliere la configurazione di rilascio, ma la configurazione di debug semplifica il debug.

    Scegliere la configurazione di debug

  5. Seguire i normali passaggi descritti in Servizi cloud (supporto esteso), ma selezionare la casella di controllo Abilita Desktop remoto per tutti i ruoli.

    Verrà chiesto di creare un nome utente e una password per l'utente desktop remoto, che sarà necessario in un secondo momento per accedere a tale macchina virtuale.

  6. Passare alla schermata successiva, esaminare le impostazioni e, quando si è pronti, fare clic su Pubblica e attendere il completamento della distribuzione.

  7. Accedere a portale di Azure e passare al servizio cloud (supporto esteso) di cui si vuole eseguire il debug.

  8. Scegliere Ruoli e Istanze nel riquadro sinistro, quindi scegliere il ruolo di cui si è interessati per eseguire il debug in remoto.

  9. Fare clic su Connetti nella finestra popup Istanza del ruolo a destra e scegliere il pulsante Connetti per scaricare un file desktop remoto che consentirà di accedere alla macchina virtuale. Accedi usando le credenziali create in un passaggio precedente quando è stato abilitato il desktop remoto.

    Screenshot che mostra il popout dell'istanza del ruolo con l'opzione Connetti.

  10. Nella macchina virtuale di Azure remota installare gli strumenti remoti di Visual Studio 2022, come descritto in Debug remoto.

  11. Dal desktop nella macchina virtuale eseguire il comando msvsmon.exe nella cartella di installazione di Visual Studio in Common7\IDE\Remote Debugger\x64. Assicurarsi di eseguire come amministratore.

  12. Accettare le richieste per consentire l'accesso tramite il firewall. Verrà visualizzato un messaggio che indica che msvsmon.exe ha iniziato ad ascoltare le connessioni.

    Screenshot che mostra che msvsmon.exe è in ascolto delle connessioni.

  13. Nel portale di Azure aprire il gruppo di risorse e ottenere l'indirizzo IP pubblico per il servizio cloud (supporto esteso).

    Screenshot che mostra dove trovare l'indirizzo IP pubblico per il servizio cloud.

Per collegare il debugger a un servizio cloud (supporto esteso) in Azure

Nota

Quando possibile, è consigliabile eseguire il debug con la configurazione debug scelta nel processo di pubblicazione , tuttavia, se si esegue il debug di una configurazione versione, in Visual Studio usare CTRL+Q per cercare "Just My Code" e deselezionare Abilita Just My Code in Tools>Opzioni>Debugger>Generale. Le build di rilascio sono ottimizzate e pertanto non sono considerate "Codice personale".

  1. Scegliere Debug>Attacca al processo (o premere Ctrl+Alt+P).

  2. Mantenere il tipo di connessione predefinito .

  3. Immettere la destinazione di connessione usando l'indirizzo IP e la porta: {ipaddress}:4026.

  4. Impostare Collega a su automatico.

  5. Accedere usando le stesse credenziali dell'utente desktop remoto.

  6. Selezionare Mostra processo per tutti gli utenti. Se si esegue il debug di un ruolo di lavoro, connettersi a WaWorkerHost.exe; se si esegue il debug di un ruolo Web, connettersi al processo w3wp.exe; per un ruolo API Web, è WaIISHost.exe.

  7. Impostare i punti di interruzione (passare alla riga e premere F9), accedere all'URL pubblico del sito e riprodurre lo scenario per il debug.

Limitazioni del debug remoto in Azure

Il debug remoto presenta le limitazioni seguenti:

  • Con il debug remoto abilitato, non è possibile pubblicare un servizio cloud in cui qualsiasi ruolo ha più di 25 istanze.

  • Il debugger usa le porte da 30400 a 30424, da 31400 a 31424 e da 32400 a 32424. Se si tenta di usare una di queste porte, non sarà possibile pubblicare il servizio e uno dei messaggi di errore seguenti verrà visualizzato nel log attività per Azure:

    • Errore durante la convalida del file .cscfg contro il file .csdef. L'intervallo di porte riservate 'range' per l'endpoint Microsoft.WindowsAzure.PlugIns.RemoteDebugger.Connector del ruolo 'role' si sovrappone a una porta o un intervallo già definito.
    • Allocazione non riuscita. Riprovare più tardi, provare a ridurre le dimensioni della macchina virtuale o il numero di istanze del ruolo oppure provare a eseguire la distribuzione in un'area diversa.

Debug del servizio app di Azure

È possibile eseguire il debug di programmi eseguiti nel servizio app di Azure usando la finestra di dialogo Connetti a processo in Visual Studio.

Nota

Questa opzione è disponibile solo per il servizio app di Azure a partire da Visual Studio 2022 17.1.

Per eseguire il debug di un servizio app di Windows Azure

  1. In Debug, selezionare Collega a un processo.

  2. Modificare Tipo di connessione in Microsoft Azure App Services, quindi selezionare Trova..

  3. Nella finestra di dialogo visualizzata selezionare il nome della sottoscrizione .

    screenshot della finestra di dialogo Seleziona servizio app di Azure, che mostra un elenco di servizi app da selezionare.

    Nota

    È necessario accedere a un account Microsoft con accesso alla sottoscrizione che contiene il servizio app di Azure.

  4. Filtrare la vista in base al gruppo di risorse o al tipo di risorsa oppure cercare in base al nome.

  5. Selezionare quindi il servizio app di cui eseguire il debug e quindi selezionare Ok.

    In questo modo è possibile eseguire il debug remoto nel servizio app e viene visualizzato un elenco di processi disponibili a cui connettersi.

    Screenshot della finestra Collega a processo, che mostra i processi in esecuzione nell'App Service selezionato.

  6. Selezionare il processo a cui si vuole connettersi e quindi scegliere Collega per avviare il debug.

Debug di macchine virtuali di Azure

È possibile eseguire il debug di programmi eseguiti in macchine virtuali di Azure usando Esplora server in Visual Studio. Quando si abilita il debug remoto in una macchina virtuale di Azure, Azure installa l'estensione di debug remoto nella macchina virtuale. È quindi possibile collegarsi ai processi nella macchina virtuale ed eseguire il debug come normalmente.

Nota

Le macchine virtuali create tramite lo stack di Azure Resource Manager possono essere sottoposte a debug in remoto usando Cloud Explorer in Visual Studio 2019. Per altre informazioni, vedere Gestione delle risorse di Azure con Cloud Explorer.

Per eseguire il debug di una macchina virtuale di Azure

  1. In Esplora server espandere il nodo Macchine virtuali e selezionare il nodo della macchina virtuale di cui si vuole eseguire il debug.

  2. Aprire il menu di scelta rapida e selezionare Abilita Debug. Quando viene chiesto se si vuole abilitare il debug nella macchina virtuale, selezionare .

    Azure installa l'estensione di debug remoto nella macchina virtuale per abilitare il debug.

    Macchina virtuale abilitare il comando di debug

    del log attività di Azure

  3. Al termine dell'installazione dell'estensione per il debug remoto, apri il menu di scelta rapida della macchina virtuale e seleziona Collega debugger...

    Azure ottiene un elenco dei processi nella macchina virtuale e li visualizza nella finestra di dialogo Collega a processo.

    collega il comando debugger

  4. Nella finestra di dialogo Collega a processo selezionare Selezionare per limitare l'elenco dei risultati per visualizzare solo i tipi di codice di cui si vuole eseguire il debug. È possibile eseguire il debug di codice gestito a 32 bit o a 64 bit, codice nativo o entrambi.

    finestra di dialogo Seleziona tipo di codice

  5. Scegliere i processi di cui si vuole eseguire il debug nella macchina virtuale e quindi selezionare Collega. Ad esempio, è possibile scegliere il processo di w3wp.exe se si vuole eseguire il debug di un'app Web nella macchina virtuale. Per altre informazioni, vedere Eseguire il debug di uno o più processi in Visual Studio e l'architettura del ruolo di Azure.

Creare un progetto Web e una macchina virtuale per il debug

Prima di pubblicare il progetto di Azure, potrebbe risultare utile testarlo in un ambiente indipendente che supporta scenari di debug e test e in cui è possibile installare programmi di test e monitoraggio. Un modo per eseguire questi test consiste nel eseguire il debug remoto dell'app in una macchina virtuale.

I progetti di Visual Studio ASP.NET offrono un'opzione per creare una macchina virtuale utile che è possibile usare per i test delle app. La macchina virtuale include endpoint di uso comune, ad esempio PowerShell, Desktop remoto e WebDeploy.

Per creare un progetto Web e una macchina virtuale per il debug

  1. In Visual Studio creare una nuova applicazione Web ASP.NET.

  2. Nella finestra di dialogo Nuovo progetto ASP.NET, nella sezione Azure, selezionare Macchina Virtuale nella casella di riepilogo a discesa. Lasciare selezionata la casella di controllo Crea risorse remote. Selezionare OK per continuare.

    Viene visualizzata la finestra di dialogo Crea macchina virtuale in Azure.

    finestra di dialogo Crea progetto Web ASP.NET

    Nota

    Se non hai già effettuato l'accesso, ti verrà chiesto di accedere al tuo account Azure.

  3. Scegliere le varie impostazioni per la macchina virtuale e quindi selezionare OK. Per altre informazioni, vedere macchine virtuali.

    Il nome immesso per il nome DNS sarà il nome della macchina virtuale.

    finestra di dialogo Crea macchina virtuale in Azure

    Azure crea la macchina virtuale e quindi effettua il provisioning e configura gli endpoint, ad esempio Desktop remoto e Distribuzione Web.

  4. Dopo aver configurato completamente la macchina virtuale, selezionare il nodo della macchina virtuale in Esplora server.

  5. Aprire il menu di scelta rapida e selezionare Abilita debug. Quando viene chiesto se si vuole abilitare il debug nella macchina virtuale, selezionare .

    Azure installa l'estensione di debug remoto nella macchina virtuale per abilitare il debug.

    Macchina virtuale abilitare il comando di debug

    del log attività di Azure

  6. Pubblicare il progetto come descritto in Procedura: Distribuire un progetto Web usando One-Click Pubblica in Visual Studio. Poiché si desidera eseguire il debug sulla macchina virtuale, nella pagina Impostazioni della procedura guidata Pubblica Web, selezionare Debug come configurazione. In questo modo si garantisce che i simboli di codice siano disponibili durante il debug.

    Impostazioni di pubblicazione

  7. Nella Opzioni di pubblicazione fileselezionare Rimuovi file aggiuntivi nella destinazione se il progetto è già stato distribuito in precedenza.

  8. Dopo la pubblicazione del progetto, nel menu di scelta rapida della macchina virtuale in Server Explorer selezionare Collega debugger...

    Azure ottiene un elenco dei processi nella macchina virtuale e li visualizza nella finestra di dialogo Collega a processo.

    collega il comando debugger

  9. Nella finestra di dialogo Collega a processo selezionare Selezionare per limitare l'elenco dei risultati per visualizzare solo i tipi di codice di cui si vuole eseguire il debug. È possibile eseguire il debug di codice gestito a 32 bit o a 64 bit, codice nativo o entrambi.

    finestra di dialogo Seleziona tipo di codice

  10. Scegliere i processi di cui si vuole eseguire il debug nella macchina virtuale e quindi selezionare Collega. Ad esempio, è possibile scegliere il processo di w3wp.exe se si vuole eseguire il debug di un'app Web nella macchina virtuale. Per altre informazioni, vedere Eseguire il debug di uno o più processi in Visual Studio.