Procedura: eseguire il debug di applicazioni di servizio per Windows
Poiché l'esecuzione di un servizio deve avvenire nel contesto di Gestione controllo servizi e non in Visual Studio, l'esecuzione del debug di un servizio non è semplice come quella di altri tipi di applicazioni di Visual Studio. Per questa operazione, è necessario avviare il servizio e connettere un debugger al processo in cui viene eseguito. È quindi possibile eseguire il debug dell'applicazione tramite tutte le funzionalità di debug standard di Visual Studio.
Attenzione |
---|
Non connettersi a un processo a meno che non si conoscano il tipo di processo e le conseguenze di tale operazione, che potrebbe anche provocare l'eliminazione del processo. Se ad esempio si effettua la connessione al processo WinLogon e si interrompe il debug, il sistema si arresta in quanto non può funzionare senza WinLogon. |
È possibile connettere il debugger solo a un servizio in esecuzione. Il processo di connessione interrompe il funzionamento corrente del servizio, ma in realtà non interrompe né sospende l'elaborazione del servizio. Se il servizio è in esecuzione quando inizia il debug, tecnicamente si trova ancora nello stato Started all'avvio del debug, ma l'elaborazione è sospesa.
La connessione al processo di un servizio consente di eseguire il debug della maggior parte del codice del servizio, ma non di tutto. Poiché il servizio è già stato avviato, ad esempio, non è possibile eseguire il debug del codice nel metodo OnStart del servizio oppure nel metodo Main utilizzato per caricare il servizio. Per risolvere il problema, creare un secondo servizio temporaneo nell'applicazione di servizio che esiste solo per il debug. È possibile caricare entrambi i servizi, quindi avviare il servizio fittizio per caricare il processo del servizio. Una volta che il servizio temporaneo ha avviato il processo, utilizzare il menu Debug di Visual Studio per connettersi al processo del servizio.
Dopo aver effettuato la connessione al processo, sarà possibile impostare punti di interruzione e utilizzarli per eseguire il debug del codice. Quando si chiude la finestra di dialogo utilizzata per effettuare la connessione al processo, si entra in modalità di debug. È possibile utilizzare Gestione controllo servizi per avviare, interrompere, sospendere e riprendere il servizio, in modo da raggiungere i punti di interruzione impostati. Al termine del debug, rimuovere il servizio fittizio.
Nota
L'esecuzione del debug del metodo OnStart può risultare difficile poiché Gestione servizi di Windows impone un limite di 30 secondi per ciascun tentativo di avvio del servizio. Per ulteriori informazioni, vedere Risoluzione dei problemi: debug dei servizi Windows.
Per eseguire il debug di un servizio
Installare il servizio. Per ulteriori informazioni, vedere Procedura: installare e disinstallare servizi.
Avviare il servizio da Gestione controllo servizi, da Esplora server o dal codice. Per ulteriori informazioni, vedere Procedura: avviare servizi.
In Visual Studio scegliere Processi dal menu Debug.
Verrà visualizzata la finestra di dialogo Processi.
Fare clic su Mostra processi di sistema.
Nella sezione Processi disponibili fare clic sul processo relativo al servizio, quindi scegliere Connetti.
Suggerimento Il nome del processo sarà lo stesso del file eseguibile del servizio.
Verrà visualizzata la finestra di dialogo Connetti a processo.
Scegliere le opzioni appropriate, quindi scegliere OK per chiudere la finestra di dialogo.
Nota
A questo punto si opera in modalità debug.
Impostare i punti di interruzione desiderati.
Accedere a Gestione controllo servizi per modificare il servizio e inviare i comandi per interrompere, sospendere e riprendere il servizio, in modo da raggiungere i punti di interruzione impostati. Per ulteriori informazioni sull'esecuzione di Gestione controllo servizi, vedere Procedura: avviare servizi.
Vedere anche
Attività
Procedura: installare e disinstallare servizi