Debug di un servizio

È possibile usare uno dei metodi seguenti per eseguire il debug del servizio.

  • Usare il debugger per eseguire il debug del servizio durante l'esecuzione. Prima di tutto, ottenere l'identificatore di processo (PID) del processo di servizio. Dopo aver ottenuto il PID, collegarsi al processo in esecuzione. Per informazioni sulla sintassi, vedere la documentazione inclusa nel debugger.

  • Chiamare la funzione DebugBreak per richiamare il debugger per il debug just-in-time.

  • Specificare un debugger da usare quando si avvia un programma. A tale scopo, creare una chiave denominata Opzioni di esecuzione file immagine nel percorso del Registro di sistema seguente:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

    Creare una sottochiave con lo stesso nome del servizio, ad esempio MYSERV.EXE. In questa sottochiave aggiungere un valore di tipo REG_SZ, denominato Debugger. Usare il percorso completo del debugger come valore stringa. Nel pannello di controllo Servizi selezionare il servizio, fare clic su Avvio e selezionare Consenti al servizio di interagire con Desktop. Il servizio deve essere un servizio interattivo oppure il debugger non può essere eseguito sul desktop predefinito. Si noti che questa tecnica non è più supportata a partire da Windows Vista perché tutti i servizi vengono eseguiti nella sessione riservata esclusivamente ai servizi e non supporta la visualizzazione di un'interfaccia utente.

  • Usare Traccia eventi per registrare le informazioni.

Per eseguire il debug del codice di inizializzazione di un servizio di avvio automatico, è necessario installare e eseguire temporaneamente il servizio come servizio di avvio richiesta.

A volte, potrebbe essere necessario eseguire un servizio come applicazione console a scopo di debug. In questo scenario, la funzione StartServiceCtrlDispatcher restituirà ERROR_FAILED_SERVICE_CONTROLLER_CONNECT. Assicurarsi pertanto di strutturare il codice in modo che il codice specifico del servizio non venga chiamato quando viene restituito questo errore.

Debug di un'applicazione di servizio

Strumenti di debug per Windows