Condividi tramite


Debug automatico dell'applicazione di servizio

Un debugger può essere avviato automaticamente all'avvio dell'applicazione di servizio. In alternativa, può essere avviato automaticamente quando l'applicazione di servizio rileva un'eccezione o esegue un comando DebugBreak . Se si è scelto uno di questi metodi, questo argomento illustra come procedere. Se non si è certi del metodo da scegliere, vedere Scelta del metodo migliore.

Seguire quindi questa procedura:

  1. Eseguire una delle operazioni preliminari seguenti:

  2. Se il servizio è già in esecuzione, è necessario riavviarlo per rendere effettive queste modifiche. È consigliabile riavviare Windows stesso, per rimuovere eventuali effetti del servizio in esecuzione. Se non si vuole riavviare Windows, usare i comandi seguenti, dove ServiceName è il nome del servizio:

    net stop ServiceName 
    net start ServiceName 
    
  3. Se si è scelto di eseguire il debug del codice di inizializzazione dell'applicazione del servizio, al momento dell'avvio del servizio, il debugger viene avviato e collegato all'applicazione di servizio.

    Se si è scelto di consentire al debugger di essere attivato da un'eccezione, l'applicazione del servizio viene eseguita normalmente finché non rileva un'eccezione o esegue una funzione DebugBreak . A questo punto, il debugger viene avviato e collegato all'applicazione di servizio.

  4. Il passaggio successivo dipende dalla riga di comando del debugger specificata durante il passaggio 1:

    • Se è stato specificato un debugger senza alcuna opzione di comunicazione remota, questo debugger viene avviato e la relativa finestra diventa visibile.
    • Se è stato specificato NTSD con le opzioni -server e -noio, NTSD viene avviato senza una finestra della console. È quindi possibile connettersi alla sessione di debug da un altro computer avviando qualsiasi debugger in modalità utente con il parametro -remote. Per istruzioni, vedere Attivazione di un client di debug.
    • Se è stato specificato NTSD con l'opzione -d, NTSD viene avviato senza una finestra della console. È quindi possibile connettersi alla sessione di debug usando il debugger del kernel in esecuzione in un altro computer. Per istruzioni, vedere Controllo del debugger di User-Mode dal debugger del kernel.
    • Se è stato specificato NTSD con le opzioni -ddefer e -server, NTSD viene avviato senza una finestra della console. È quindi possibile connettersi alla sessione di debug usando sia un debugger kernel che un debugger remoto in modalità utente, in esecuzione in un computer diverso dal servizio (ma possibilmente lo stesso computer dell'altro). Per istruzioni, vedere Combinazione di questo metodo con debug remoto.
  5. Al momento dell'avvio del debugger, il servizio sospende al punto di interruzione del processo iniziale, l'eccezione o il comando DebugBreak . In questo modo è possibile esaminare lo stato corrente dell'applicazione di servizio, impostare i punti di interruzione e apportare altre opzioni di configurazione desiderate.

  6. Usare g (Go) o un altro comando di esecuzione per riprendere l'esecuzione dell'applicazione di servizio.

Vedere anche

DebugBreak (funzione)