Debug di un servizio cloud o di una macchina virtuale di Azure in Visual StudioDebugging an Azure cloud service or virtual machine in Visual Studio

Visual Studio offre diverse opzioni per il debug dei servizi cloud e delle macchine virtuali di Azure.Visual Studio gives you different options for debugging Azure cloud services and virtual machines.

Eseguire il debug del servizio cloud sul computer localeDebug your cloud service on your local computer

È possibile risparmiare tempo e denaro usando l'emulatore di calcolo di Azure per il debug del servizio cloud su un computer locale.You can save time and money by using the Azure compute emulator to debug your cloud service on a local machine. 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.By debugging a service locally before you deploy it, you can improve reliability and performance without paying for compute time. Tuttavia, potrebbero verificarsi alcuni errori solo quando si esegue un servizio cloud in Azure stesso.However, some errors might occur only when you run a cloud service in Azure itself. È 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.You can debug these errors if you enable remote debugging when you publish your service and then attach the debugger to a role instance.

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.The emulator simulates the Azure Compute service and runs in your local environment so that you can test and debug your cloud service before you deploy it. L'emulatore gestisce il ciclo di vita delle istanze del ruolo e fornisce l'accesso alle risorse simulate, ad esempio l'archiviazione locale.The emulator handles the lifecycle of your role instances and provides access to simulated resources, such as local storage. 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.When you debug or run your service from Visual Studio, it automatically starts the emulator as a background application and then deploys your service to the emulator. È possibile usare l'emulatore per visualizzare il servizio quando è in esecuzione nell'ambiente locale.You can use the emulator to view your service when it runs in the local environment. È possibile eseguire la versione completa o la versione express dell'emulatore.You can run the full version or the express version of the emulator. (A partire da Azure 2.3, la versione express dell'emulatore è l'impostazione predefinita). Vedere Uso dell'emulatore Express per l'esecuzione e il debug in locale di un servizio cloud.(Starting with Azure 2.3, the express version of the emulator is the default.) See Using Emulator Express to Run and Debug a Cloud Service Locally.

Per eseguire il debug del servizio cloud nel computer localeTo debug your cloud service on your local computer

  1. Sulla barra dei menu scegliere Debug, Avvia debug per eseguire il progetto servizio cloud di Azure.On the menu bar, choose Debug, Start Debugging to run your Azure cloud service project. In alternativa, è possibile premere F5.As an alternative, you can press F5. Verrà visualizzato un messaggio che indica l'avvio dell'emulatore di calcolo.You’ll see a message that the Compute Emulator is starting. Quando l'emulatore viene avviato, l'icona della barra delle applicazioni conferma l'operazione.When the emulator starts, the system tray icon confirms it.

    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).Display the user interface for the compute emulator by opening the shortcut menu for the Azure icon in the notification area, and then select Show Compute Emulator UI.

    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.The left pane of the UI shows the services that are currently deployed to the compute emulator and the role instances that each service is running. È possibile scegliere il servizio o i ruoli per visualizzare le informazioni di diagnostica, registrazione e ciclo di vita nel riquadro di destra.You can choose the service or roles to display lifecycle, logging, and diagnostic information in the right pane. Se si seleziona il margine superiore di una finestra inclusa, essa si espande per riempire il riquadro destro.If you put the focus in the top margin of an included window, it expands to fill the right pane.

  3. È possibile eseguire l'applicazione un'istruzione alla volta selezionando i comandi del menu Debug e impostando punti di interruzione nel codice.Step through the application by selecting commands on the Debug menu and setting breakpoints in your code. Mentre si esegue l'applicazione un'istruzione alla volta nel debugger, i riquadri vengono aggiornati con lo stato corrente dell'applicazione.As you step through the application in the debugger, the panes are updated with the current status of the application. Quando si arresta il debug, la distribuzione dell'applicazione viene eliminata.When you stop debugging, the application deployment is deleted. 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.If your application includes a web role and you've set the Startup action property to start the web browser, Visual Studio starts your web application in the 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.If you change the number of instances of a role in the service configuration, you must stop your cloud service and then restart debugging so that you can debug these new instances of the role.

    Nota: quando si arresta l'esecuzione o il debug del servizio, l'emulatore di calcolo locale e l'emulatore di archiviazione non vengono arrestati.Note: When you stop running or debugging your service, the local compute emulator and storage emulator aren't stopped. È necessario arrestarli in modo esplicito dall'area di notifica.You must stop them explicitly from the notification area.

Debug di un servizio cloud in AzureDebug a cloud service in Azure

Per eseguire il debug di un servizio cloud da un computer remoto, è necessario abilitare tale funzionalità in modo esplicito quando si distribuisce il servizio cloud, in modo che i servizi richiesti (ad esempio msvsmon.exe) siano installati nelle macchine virtuali che eseguono le istanze del ruolo.To debug a cloud service from a remote machine, you must enable that functionality explicitly when you deploy your cloud service so that required services (msvsmon.exe, for example) are installed on the virtual machines that run your role instances. Se si non abilita il debug remoto quando il servizio è pubblicato, è necessario ripubblicare il servizio con il debug remoto abilitato.If you didn't enable remote debugging when you published the service, you have to republish the service with remote debugging enabled.

Se si abilita il debug remoto per un servizio cloud, esso non produce una riduzione delle prestazioni o costi aggiuntivi.If you enable remote debugging for a cloud service, it doesn't exhibit degraded performance or incur additional charges. È consigliabile non usare il debug remoto in un servizio di produzione, poiché i client che usano il servizio potrebbero essere compromessi.You shouldn't use remote debugging on a production service, because clients who use the service might be adversely affected.

Nota

Quando si pubblica un servizio cloud da Visual Studio, è possibile abilitare IntelliTrace per qualsiasi ruolo del servizio destinato a .NET Framework 4 o .NET Framework 4.5.When you publish a cloud service from Visual Studio, you can enable IntelliTrace for any roles in that service that target the .NET Framework 4 or the .NET Framework 4.5. Tramite IntelliTraceè possibile esaminare gli eventi verificatisi in un'istanza del ruolo in passato e riprodurre il contesto da quel momento.By using IntelliTrace, you can examine events that occurred in a role instance in the past and reproduce the context from that time. Vedere Debug di un servizio cloud pubblicato con IntelliTrace e Visual Studio e Uso di IntelliTrace.See Debugging a published cloud service with IntelliTrace and Visual Studio and Using IntelliTrace.

Per abilitare il debug remoto per un servizio cloudTo enable remote debugging for a cloud service

  1. Aprire il menu di scelta rapida per il progetto Azure e quindi selezionare Pubblica.Open the shortcut menu for the Azure project, and then select Publish.
  2. Selezionare l'ambiente di Gestione temporanea e la configurazione di Debug.Select the Staging environment and the Debug configuration.

    Questa è solo un'indicazione.This is only a guideline. È possibile scegliere di eseguire ambienti di test in un ambiente di produzione.You can opt to run your test environments in a Production environment. Tuttavia, possono verificarsi effetti negativi per gli utenti se si abilita il debug remoto nell'ambiente di produzione.However, you may adversely affect users if you enable remote debugging on the Production environment. È possibile scegliere la configurazione di rilascio, ma la configurazione di debug semplifica il debug.You can choose the Release configuration, but the Debug configuration makes debugging easier.

    Scegliere la configurazione di debug

  3. Seguire la procedura consueta, ma selezionare la casella di controllo Abilita debug remoto per tutti i ruoli nella scheda Impostazioni avanzate.Follow the usual steps, but select the Enable Remote Debugger for all roles check box on the Advanced Settings tab.

    Configurazione di debug

Per collegare il debugger a un servizio cloud in AzureTo attach the debugger to a cloud service in Azure

  1. In Esplora server espandere il nodo del servizio cloud.In Server Explorer, expand the node for your cloud service.
  2. Aprire il menu di scelta rapida per il ruolo o l'istanza del ruolo a cui si vuole collegarlo, quindi selezionare Collega debugger.Open the shortcut menu for the role or role instance to which you want to attach, and then select Attach Debugger.

    Se si esegue il debug di un ruolo, il debugger di Visual Studio si connette a ogni istanza di tale ruolo.If you debug a role, the Visual Studio debugger attaches to each instance of that role. Il debugger si interrompe in un punto di interruzione per la prima istanza del ruolo che esegue la riga di codice e soddisfa le condizioni del punto di interruzione.The debugger will break on a breakpoint for the first role instance that runs that line of code and meets any conditions of that breakpoint. Se si esegue il debug di un'istanza, il debugger si collega solo a tale istanza e si interrompe in un punto di interruzione solo quando l’istanza specifica esegue la riga di codice e soddisfa le condizioni del punto di interruzione.If you debug an instance, the debugger attaches to only that instance and breaks on a breakpoint only when that specific instance runs that line of code and meets the breakpoint's conditions.

    Collega debugger

  3. Dopo che il debugger si connette a un'istanza, eseguire il debug come di consueto.After the debugger attaches to an instance, debug as usual. Il debugger si connette automaticamente al processo host appropriato per il ruolo.The debugger automatically attaches to the appropriate host process for your role. In base al ruolo, il debugger si collega a w3wp.exe, WaWorkerHost.exe o WaIISHost.exe.Depending on what the role is, the debugger attaches to w3wp.exe, WaWorkerHost.exe, or WaIISHost.exe. Per verificare il processo a cui è collegato il debugger, espandere il nodo dell'istanza in Esplora server.To verify the process to which the debugger is attached, expand the instance node in Server Explorer. Vedere Architettura del ruolo di Azure per altre informazioni sui processi di Azure.See Azure Role Architecture for more information about Azure processes.

    Finestra di dialogo Seleziona tipo di codice

  4. Per identificare i processi a cui è collegato il debugger, aprire la finestra di dialogo Processi, nella barra dei menu, selezionando Debug, Windows, Processi.To identify the processes to which the debugger is attached, open the Processes dialog box by, on the menu bar, choosing Debug, Windows, Processes. (Tastiera: Ctrl+Alt+Z) Per disconnettere un processo specifico, aprire il menu di scelta rapida e quindi selezionare Disconnetti processo.(Keyboard: Ctrl+Alt+Z)To detach a specific process, open its shortcut menu, and then select Detach Process. In alternativa, individuare il nodo dell'istanza in Esplora server, individuare il processo, aprire il relativo menu di scelta rapida e quindi selezionare Disconnetti processo.Or, locate the instance node in Server Explorer, find the process, open its shortcut menu, and then select Detach Process.

    Debug di processi

Avviso

Evitare interruzioni prolungate in corrispondenza dei punti di interruzione durante il debug remoto.Avoid long stops at breakpoints when remote debugging. Azure considera un processo che è stato arrestato per più di pochi minuti come processo che non risponde e interrompe l'invio di traffico a tale istanza.Azure treats a process that's stopped for longer than a few minutes as unresponsive and stops sending traffic to that instance. Se si arresta per troppo tempo, msvsmon.exe si disconnette dal processo.If you stop for too long, msvsmon.exe detaches from the process.

Per disconnettere il debugger da tutti i processi nell'istanza o nel ruolo, aprire il menu di scelta rapida per il ruolo o l'istanza di cui si esegue il debug e quindi selezionare Scollega debugger.To detach the debugger from all processes in your instance or role, open the shortcut menu for the role or instance that you're debugging, and then select Detach Debugger.

Limitazioni del debug remoto in AzureLimitations of remote debugging in Azure

Da Azure SDK 2.3, il debug remoto presenta le seguenti limitazioni.From Azure SDK 2.3, remote debugging has the following limitations.

  • Con il debug remoto abilitato, non è possibile pubblicare un servizio cloud in cui un ruolo contiene più di 25 istanze.With remote debugging enabled, you can't publish a cloud service in which any role has more than 25 instances.
  • Il debugger usa le porte da 30400 a 30424, da 31400 a 31424e da 32400 a 32424.The debugger uses ports 30400 to 30424, 31400 to 31424 and 32400 to 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:If you try to use any of these ports, you won't be able to publish your service, and one of the following error messages will appear in the activity log for Azure:

    • Errore durante la convalida del file con estensione cscfg in base al file con estensione csdef.Error validating the .cscfg file against the .csdef file. L'intervallo di porte riservate 'intervallo' per l’endpoint Microsoft.WindowsAzure.Plugins.RemoteDebugger.Connector del ruolo 'ruolo' si sovrappone con una porta o un intervallo già definiti.The reserved port range 'range' for endpoint Microsoft.WindowsAzure.Plugins.RemoteDebugger.Connector of role 'role' overlaps with an already defined port or range.
    • Allocazione non riuscita.Allocation failed. Riprovare più tardi, provare a ridurre la dimensione della VM o il numero di istanze del ruolo oppure provare a distribuire in un'area diversa.Please retry later, try reducing the VM size or number of role instances, or try deploying to a different region.

Debug di macchine virtuali di AzureDebugging Azure virtual machines

È possibile eseguire il debug di programmi in esecuzione su macchine virtuali di Azure tramite Esplora server in Visual Studio.You can debug programs that run on Azure virtual machines by using Server Explorer 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.When you enable remote debugging on an Azure virtual machine, Azure installs the remote debugging extension on the virtual machine. Quindi, è possibile connettersi a processi sulla macchina virtuale ed eseguire il debug come di consueto.Then, you can attach to processes on the virtual machine and debug as you normally would.

Nota

Il debug di macchine virtuali create tramite lo stack di gestione risorse di Azure può essere eseguito in modalità remota usando Esplora cloud in Visual Studio 2015.Virtual machines created through the Azure resource manager stack can be remotely debugged by using Cloud Explorer in Visual Studio 2015. Per altre informazioni, vedere Gestione delle risorse di Azure con Cloud Explorer.For more information, see Managing Azure Resources with Cloud Explorer.

Per eseguire il debug di una macchina virtuale di Azure.To debug an Azure virtual machine

  1. In Esplora server espandere il nodo Macchine virtuali e selezionare il nodo della macchina virtuale di cui si desidera eseguire il debug.In Server Explorer, expand the Virtual Machines node and select the node of the virtual machine that you want to debug.
  2. Aprire il menu di scelta rapida e selezionare Abilita debug.Open the context menu and select Enable Debugging. Quando viene chiesto se si è certi di voler abilitare il debug nella macchina virtuale, selezionare .When asked if you're sure if you want to enable debugging on the virtual machine, select Yes.

    Azure installa l'estensione di debug remoto nella macchina virtuale per abilitare il debug.Azure installs the remote debugging extension on the virtual machine to enable debugging.

    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...After the remote debugging extension finishes installing, open the virtual machine's context menu and select Attach Debugger...

    Azure ottiene un elenco dei processi nella macchina virtuale e li visualizza nella finestra di dialogo Connetti a processo.Azure gets a list of the processes on the virtual machine and shows them in the Attach to Process dialog box.

    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.In the Attach to Process dialog box, select Select to limit the results list to show only the types of code you want to debug. È possibile eseguire il debug di codice gestito, codice nativo o entrambi a 32 o 64 bit.You can debug 32- or 64-bit managed code, native code, or both.

    Finestra di dialogo Seleziona tipo di codice

  5. Selezionare i processi da sottoporre a debug nella macchina virtuale e quindi scegliere Connetti.Select the processes you want to debug on the virtual machine and then select Attach. Ad esempio, è possibile scegliere il processo w3wp.exe se si desidera eseguire il debug di un'applicazione Web nella macchina virtuale.For example, you might choose the w3wp.exe process if you wanted to debug a web app on the virtual machine. Per altre informazioni, vedere Debug di uno o più processi in Visual Studio e Architettura del ruolo di Azure.See Debug One or More Processes in Visual Studio and Azure Role Architecture for more information.

Creare un progetto Web e una macchina virtuale per il debugCreate a web project and a virtual machine for debugging

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.Before publishing your Azure project, you might find it useful to test it in a contained environment that supports debugging and testing scenarios, and where you can install testing and monitoring programs. Per eseguire questa operazione, è possibile eseguire il debug remoto dell'applicazione in una macchina virtuale.One way to do this is to remotely debug your app on a virtual machine.

I progetti ASP.NET di Visual Studio offrono un'opzione per creare una macchina virtuale utile che è possibile usare per il test delle applicazioni.Visual Studio ASP.NET projects offer an option to create a handy virtual machine that you can use for app testing. La macchina virtuale include endpoint comunemente necessari, come PowerShell, desktop remoto e WebDeploy.The virtual machine includes commonly-needed endpoints such as PowerShell, remote desktop, and WebDeploy.

Per creare un progetto Web e una macchina virtuale per il debugTo create a web project and a virtual machine for debugging

  1. Creare un'applicazione Web ASP.NET in Visual Studio.In Visual Studio, create a new ASP.NET Web Application.
  2. Scegliere Macchina virtuale dall'elenco a discesa nella sezione Azure della finestra di dialogo Nuovo progetto ASP.NET.In the New ASP.NET Project dialog, in the Azure section, choose Virtual Machine in the dropdown list box. Lasciare selezionata la casella di controllo Crea risorse remote .Leave the Create remote resources check box selected. Selezionare OK per procedere.Select OK to proceed.

    Verrà visualizzata la finestra di dialogo per la creazione di una macchina virtuale in Azure.The Create virtual machine on Azure dialog box appears.

    Finestra di dialogo Crea progetto Web ASP.NET

    Nota: verrà chiesto di accedere al proprio account Azure, se non è ancora stato effettuato l'accesso.Note: You'll be asked to sign in to your Azure account if you're not already signed in.

  3. Selezionare le varie impostazioni per la macchina virtuale e quindi scegliere OK.Select the various settings for the virtual machine and then select OK. Per altre informazioni, vedere Macchine virtuali .See Virtual Machines for more information.

    Il valore specificato per il nome DNS sarà il nome della macchina virtuale.The name you enter for DNS name will be the name of the virtual machine.

    Finestra di dialogo Crea macchina virtuale di Azure

    Azure crea la macchina virtuale e quindi esegue il provisioning e la configurazione degli endpoint, ad esempio Desktop remoto e Distribuzione WebAzure creates the virtual machine and then provisions and configures the endpoints, such as Remote Desktop and Web Deploy

  4. Dopo aver configurato completamente la macchina virtuale, selezionare il relativo nodo in Esplora server.After the virtual machine is fully configured, select the virtual machine’s node in Server Explorer.
  5. Aprire il menu di scelta rapida e selezionare Abilita debug.Open the context menu and select Enable Debugging. Quando viene chiesto se si è certi di voler abilitare il debug nella macchina virtuale, selezionare .When asked if you're sure if you want to enable debugging on the virtual machine, select Yes.

    Azure installa l'estensione di debug remoto nella macchina virtuale per abilitare il debug.Azure installs the remote debugging extension to the virtual machine to enable debugging.

    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.Publish your project as outlined in How to: Deploy a Web Project Using One-Click Publish 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.Because you want to debug on the virtual machine, on the Settings page of the Publish Web wizard, select Debug as the configuration. Ciò assicura che i simboli del codice siano disponibili durante il debug.This makes sure that code symbols are available while debugging.

    Impostazioni di pubblicazione

  7. In Opzioni pubblicazione file selezionare Rimuovi i file aggiuntivi nella destinazione se il progetto è già stato distribuito in precedenza.In the File Publish Options, select Remove additional files at destination if the project was already deployed at an earlier time.
  8. Dopo la pubblicazione del progetto, selezionare Collega debugger...After the project publishes, on the virtual machine's context menu in Server Explorer, select Attach Debugger...

    Azure ottiene un elenco dei processi nella macchina virtuale e li visualizza nella finestra di dialogo Connetti a processo.Azure gets a list of the processes on the virtual machine and shows them in the Attach to Process dialog box.

    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.In the Attach to Process dialog box, select Select to limit the results list to show only the types of code you want to debug. È possibile eseguire il debug di codice gestito, codice nativo o entrambi a 32 o 64 bit.You can debug 32- or 64-bit managed code, native code, or both.

    Finestra di dialogo Seleziona tipo di codice

  10. Selezionare i processi da sottoporre a debug nella macchina virtuale e quindi scegliere Connetti.Select the processes you want to debug on the virtual machine and then select Attach. Ad esempio, è possibile scegliere il processo w3wp.exe se si desidera eseguire il debug di un'applicazione Web nella macchina virtuale.For example, you might choose the w3wp.exe process if you wanted to debug a web app on the virtual machine. Per altre informazioni, vedere Debug di uno o più processi in Visual Studio .See Debug One or More Processes in Visual Studio for more information.

Passaggi successiviNext steps