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

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

Prerequisiti

Eseguire il debug del servizio cloud sul 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 della distribuzione, è possibile migliorare l'affidabilità e le prestazioni senza pagare per il tempo di calcolo. Tuttavia, potrebbero verificarsi alcuni errori 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 poi si collega il debugger a un'istanza del ruolo.

L'emulatore simula il servizio di calcolo di Azure e viene eseguito nell'ambiente locale in modo da poter testare ed eseguire il debug del servizio cloud prima della distribuzione. L'emulatore gestisce il ciclo di vita delle istanze del ruolo e fornisce l'accesso alle risorse simulate, ad esempio l'archiviazione locale. Durante il debug o l’esecuzione del servizio da Visual Studio, esso avvia automaticamente l’emulatore come applicazione in background e il servizio viene distribuito all'emulatore. È possibile usare l'emulatore per visualizzare il servizio quando è in esecuzione nell'ambiente locale. È possibile eseguire la versione completa o la versione express dell'emulatore. Vedere Uso dell'emulatore Express per l'esecuzione e il debug in locale di un servizio cloud.

Per eseguire il debug del servizio cloud nel computer locale

  1. Nella barra dei menu selezionare Debug>Avvia debug per eseguire il progetto azure Servizi cloud (supporto esteso). In alternativa è possibile premere F5. Verrà visualizzato un messaggio che informa che l'emulatore di calcolo è in corso. Quando l'emulatore viene avviato, l'icona della barra delle applicazioni conferma l'operazione.

    Emulatore di Azure nella barra delle applicazioni

  2. Per visualizzare l'interfaccia utente dell'emulatore di calcolo, aprire il menu di scelta rapida dell'icona di Azure nell'area di notifica e selezionare Show Compute Emulator UI(Mostra interfaccia emulatore di calcolo).

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

  3. Scorrere l'applicazione scegliendo i comandi nel menu Debug e impostando punti di interruzione nel codice. Mentre si esegue l'applicazione un'istruzione alla volta 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à dell'azione di avvio è stata impostata per l'avvio del 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 quindi riavviare il debug perché sia possibile eseguire il debug delle 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 arrestarli in modo esplicito dall'area di notifica.

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, poiché i client che usano il servizio potrebbero essere compromessi.

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

  1. Aggiungere un endpoint all'oggetto 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 porta del debugger remoto.

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

  3. Selezionare l'ambiente di Gestione temporanea e la configurazione di Debug.

    Questa è solo un'indicazione. È possibile scegliere di eseguire ambienti di test in un ambiente di produzione. Tuttavia, possono verificarsi effetti negativi per gli 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 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 a sinistra, quindi scegliere il ruolo a cui si è interessati eseguire il debug in remoto.

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

    Screenshot che mostra il popup dell'istanza del 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:\Programmi (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. Nella 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, ma se si esegue il debug di una configurazione di versione, in Visual Studio usare CTRL+Q per cercare "Just My Code" e deselezionare Abilita Just My Code in Strumenti>Opzioni>Debugger>Generale. Le build di rilascio sono ottimizzate e pertanto non sono considerate "Codice personale".

  1. Scegliere Debug>Collega a processo (o premere CTRL+ALT+P).

  2. Mantenere il tipo di connessione predefinito.

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

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

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

  1. Aggiungere un endpoint all'oggetto 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 porta 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 nell'elemento osFamily durante la ServiceConfiguration 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 Azure e quindi selezionare Pubblica.

  4. Selezionare l'ambiente di Gestione temporanea e la configurazione di Debug.

    Questa è solo un'indicazione. È possibile scegliere di eseguire ambienti di test in un ambiente di produzione. Tuttavia, possono verificarsi effetti negativi per gli 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 a sinistra, quindi scegliere il ruolo a cui si è interessati eseguire il debug in remoto.

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

    Screenshot che mostra il popup 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. Nella 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, ma se si esegue il debug di una configurazione di versione, in Visual Studio usare CTRL+Q per cercare "Just My Code" e deselezionare Abilita Just My Code in Strumenti>Opzioni>Debugger>Generale. Le build di rilascio sono ottimizzate e pertanto non sono considerate "Codice personale".

  1. Scegliere Debug>Collega a processo (o premere CTRL+ALT+P).

  2. Mantenere il tipo di connessione predefinito.

  3. Immettere la destinazione della 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 di 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 un ruolo contiene più di 25 istanze.

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

    • Errore durante la convalida del file con estensione cscfg in base al file con estensione 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 Azure

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

Nota

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

Per eseguire il debug di un servizio Windows app Azure

  1. In Debug selezionare Connetti a processo.

  2. Modificare Tipo di connessione in Microsoft app Azure Services e quindi selezionare Find...

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

    Screenshot della finestra di dialogo Seleziona app Azure servizio, 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 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 si vuole 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 Connetti a processo, che mostra i processi in esecuzione nella servizio app selezionata.

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

Debug di Azure Macchine virtuali

È possibile eseguire il debug di programmi eseguiti in Azure Macchine virtuali usando Esplora server in Visual Studio. Quando si abilita il debug remoto su una macchina virtuale di Azure, Azure installa l'estensione di debug remoto nella macchina virtuale. Quindi, è possibile connettersi a processi sulla macchina virtuale ed eseguire il debug come di consueto.

Nota

Macchine virtuali creati tramite lo stack di Azure Resource Manager possono essere sottoposti 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 desidera eseguire il debug.

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

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

    Comando di debug di abilitazione della macchina virtuale

    Finestra Log attività di Azure

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

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

    Comando Collega debugger

  4. Nella finestra di dialogo Connetti a processo scegliere Seleziona per limitare l'elenco di risultati in modo che visualizzi solo i tipi di codice da sottoporre a debug. È possibile eseguire il debug di codice gestito, codice nativo o entrambi a 32 o 64 bit.

    Finestra di dialogo Seleziona tipo di codice

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

Creare un progetto Web e una macchina virtuale per il debug

Prima di pubblicare il progetto Azure, può risultare utile per eseguire il test in un ambiente indipendente che supporti scenari di debug e di test e in cui sia possibile installare programmi di test e di controllo. Per avviare tale test, eseguire il debug remoto dell'app in una macchina virtuale.

I progetti ASP.NET di Visual Studio offrono un'opzione per creare una macchina virtuale utile che è possibile usare per il test delle applicazioni. La macchina virtuale include endpoint comunemente necessari, come PowerShell, Desktop remoto e WebDeploy.

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

  1. Creare un'applicazione Web ASP.NET in Visual Studio.

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

    Verrà visualizzata la finestra di dialogo per la creazione di una macchina virtuale in Azure.

    Finestra di dialogo Crea progetto Web ASP.NET

    Nota

    verrà chiesto di accedere all'account Azure, se non è ancora stato eseguito l'accesso.

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

    Il valore specificato per il nome DNS sarà il nome della macchina virtuale.

    Finestra di dialogo Crea macchina virtuale di 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 è certi di voler abilitare il debug nella macchina virtuale, selezionare .

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

    Comando di debug di abilitazione della macchina virtuale

    Finestra Log attività di Azure

  6. Pubblicare il progetto come descritto in Procedura: Distribuire un progetto Web tramite la pubblicazione con un clic in Visual Studio. Poiché si intende eseguire il debug nella macchina virtuale, nella pagina Impostazioni della procedura guidata Pubblica sul Web selezionare Debug come configurazione. Ciò assicura che i simboli del codice siano disponibili durante il debug.

    Publish settings (Impostazioni di pubblicazione)

  7. In Opzioni pubblicazione file selezionare Rimuovi i file aggiuntivi nella destinazione se il progetto è già stato distribuito in precedenza.

  8. Dopo la pubblicazione del progetto, selezionare Collega debugger...

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

    Comando Collega debugger

  9. Nella finestra di dialogo Connetti a processo scegliere Seleziona per limitare l'elenco di risultati in modo che visualizzi solo i tipi di codice da sottoporre a debug. È possibile eseguire il debug di codice gestito, codice nativo o entrambi a 32 o 64 bit.

    Finestra di dialogo Seleziona tipo di codice

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