Al momento sei offline in attesa che la connessione Internet venga ristabilita

Come eseguire il debug di servizi Windows

Il supporto per Windows XP è terminato

Il supporto Microsoft per Windows XP è terminato l'8 aprile 2014. Questa modifica ha interessato gli aggiornamenti software e le opzioni di sicurezza. Ulteriori informazioni su come continuare a essere protetti.

Il supporto per Windows Server 2003 è terminato il 14 luglio 2015.

Microsoft ha sospeso il supporto per Windows Server 2003 in data 14 luglio 2015. Questa modifica ha interessato gli aggiornamenti software e le opzioni di sicurezza. Ulteriori informazioni su come continuare a essere protetti.

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 824344
Sommario
In questo articolo viene descritto come eseguire il debug di un servizio di Windows utilizzando il debugger WinDbg (windbg.exe). Per eseguire il debug di un servizio Windows, è possibile connettere il debugger WinDbg per il processo che ospita il servizio dopo l'avvio del servizio oppure è possibile configurare il servizio venga avviato con il debugger WinDbg in modo che è possibile risolvere i problemi relativi al servizio-avvio. In questo articolo vengono descritti entrambi i metodi.

Torna all'inizio

Requisiti

In questo articolo si presuppone che si abbia familiarità con i seguenti argomenti:
  • Servizi di Windows
  • WinDbg Debugger
Torna all'inizio

Connettere il debugger WinDbg a un servizio dopo l'avvio del servizio

Questo metodo è simile al metodo che è possibile utilizzare per connettere un debugger a un processo e quindi eseguire il debug di un processo.

Utilizzare l'ID di processo del processo che ospita il servizio che si desidera eseguire il debug

  1. Per determinare l'ID processo (PID) del processo del servizio hoststhe che si desidera eseguire il debug, utilizzare uno dei metodi descritti di seguito.
    • Metodo 1: Utilizzare Task Manager
      1. Destro della barra delle applicazioni e quindi fare clic su Task Manager. Verrà visualizzata la finestra di dialogo Task Manager di Windows .
      2. Fare clic sulla scheda processi della finestra di dialogo Task Manager di Windows .
      3. In Nome dell'immagine, fare clic sul nome di immagine del processo che ospita il servizio che si desidera eseguire il debug. Annotare l'ID di processo del processo come specificato dal valore del campo PID corrispondente.
    • Metodo 2: Utilizzare l'utilità di elenco di attività (tlist.exe)
      1. Fare clic su Start e quindi fare clic su Esegui. Verrà visualizzata la finestra di dialogo Esegui .
      2. Nella casella Apri , digitare cmd, quindi scegliere OK.
      3. Al prompt dei comandi, modificare il percorso di directory per riflettere il percorso del file tlist.exe nel computer in uso.

        Nota Il file tlist.exe in genere si trova nella seguente directory: c:\Programmi\Microsoft contenuti gli strumenti per Windows
      4. Al prompt dei comandi, digitare Tlist Per elencare i nomi di immagine e gli ID processo di tutti i processi attualmente in esecuzione nel computer in uso.

        Nota Prendere nota dell'ID di processo del processo che ospita il servizio che si desidera eseguire il debug.
  2. Al prompt dei comandi, modificare il percorso della directory in modo da riflettere il thelocation del file windbg.exe nel computer in uso.

    Nota Se non è aperto un prompt dei comandi, attenersi alla procedura una a e b del metodo 1. Il file windbg.exe si trova generalmente nella seguente directory: C:\Program Files\Debugging Tools for Windows.
  3. Al prompt dei comandi, digitare WinDbg – pProcessID /g Per allegare il debuggerto di WinDbg il processo che ospita il servizio che si desidera eseguire il debug.

    Nota ProcessID è un segnaposto per Process ID del processo che ospita il servizio che si desidera todebug.
Torna all'inizio

Utilizzare il nome dell'immagine del processo che ospita il servizio che si desidera eseguire il debug

È possibile utilizzare questo metodo solo se è presente esattamente un'istanza in esecuzione del processo che ospita il servizio che si desidera eseguire. A tale scopo, attenersi alla seguente procedura:
  1. Fare clic su Starte quindi fare clic suEsegui. Verrà visualizzata la finestra di dialogo Esegui .
  2. Nella casella Apri , digitarecmd, quindi fare clic su OK per aprire prompt dei comandi acommand.
  3. Al prompt dei comandi, modificare il percorso della directory in modo da riflettere il thelocation del file windbg.exe nel computer in uso.

    Nota Il file windbg.exe in genere all'interno di followingdirectory: c:\Programmi\Microsoft contenuti gli strumenti per Windows.
  4. Al prompt dei comandi, digitare WinDbg: pnImageName /g Per allegare il debuggerto di WinDbg il processo che ospita il servizio che si desidera eseguire il debug.

    NotaImageName è un segnaposto per il nome di elevata del processo che ospita il servizio che si desidera eseguire il debug. Il "-pn" opzione della riga di comando consente di specificare che ilImageName l'argomento della riga di comando è il processo di ofa nome dell'immagine.
Torna all'inizio

Avviare il debugger WinDbg e connettersi al processo che ospita il servizio che si desidera eseguire il debug

  1. Avviare Esplora risorse.
  2. Individuare il file windbg.exe nel computer in uso.

    Nota Il file windbg.exe in genere all'interno di followingdirectory: c:\Programmi\Microsoft contenuti gli strumenti per Windows
  3. Eseguire il file windbg.exe con il /g opzione della riga di comando per avviare il WinDbgdebugger. Il /g opzione della riga di comando consente di continuare dopo il punto di interruzione è impostato il processo di revisione.
  4. Dal menu File , fare clic su Connetti toa processo per visualizzare il dialogbox Connetti a processo .
  5. Fare clic per selezionare il nodo che corrisponde agli host processthat il servizio che si desidera eseguire il debug e quindi fare clic suOK.
  6. Nella finestra di dialogo visualizzata, fare clic su per salvare le informazioni di base dell'area di lavoro. Si noti che ora eseguire il debug di codice thedisassembled del servizio.
Torna all'inizio

Configurare un servizio da avviare con il debugger WinDbg

È possibile utilizzare questo metodo per eseguire il debug di servizi se si desidera risolvere i problemi relativi al servizio-avvio.
  1. Configurare le opzioni di "Esecuzione di File di immagine". A tale scopo, utilizzare uno dei seguenti metodi:
    • Metodo 1: Utilizzare l'Editor del flag globale (gflags.exe)
      1. Avviare Esplora risorse.
      2. Individuare il file gflags.exe nel computer in uso.

        Nota Il file gflags.exe in genere si trova nella seguente directory: c:\Programmi\Microsoft contenuti gli strumenti per Windows.
      3. Eseguire il file gflags.exe per avviare l'Editor di flag globali.
      4. Nella casella di testo Nome File immagine , digitare il nome dell'immagine del processo che ospita il servizio che si desidera eseguire il debug. Ad esempio, se si desidera eseguire il debug di un servizio ospitato da un processo che ha MyService.exe come nome dell'immagine, digitare MyService.exe.
      5. In destinazione, fare clic per selezionare l'opzione Opzioni del File di immagine .
      6. Le opzioni del Debugger di immagine, fare clic per selezionare la casella di controllo del Debugger .
      7. Nella casella di testo Debugger , digitare il percorso completo del debugger che si desidera utilizzare. Ad esempio, se si desidera utilizzare il debugger WinDbg per il debug di un servizio, è possibile digitare un percorso completo simile al seguente: C:\Programmi\Microsoft contenuti strumenti per Windows\windbg.exe
      8. Fare clic su Applicae quindi fare clic su OK per chiudere l'Editor di flag globali.
    • Metodo 2: Utilizzare l'Editor del Registro di sistema
      1. Fare clic su Start e quindi fare clic su Esegui. Verrà visualizzata la finestra di dialogo Esegui .
      2. Nella casella Apri , digitare Regedit, quindi fare clic su OK per avviare l'Editor del Registro di sistema.
      3. Importante Questa sezione, metodo o attività contiene passaggi su come modificare il Registro di sistema. Tuttavia, può causare seri problemi la modifica del Registro di sistema in modo non corretto. Pertanto, assicurarsi di seguire attentamente i passaggi. Per maggiore protezione, eseguire il backup del Registro di sistema prima di modificarlo. Cosicché sia possibile ripristinare il Registro di sistema se si verifica un problema. Per ulteriori informazioni su come eseguire il backup e ripristinare il Registro di sistema, fare clic sul numero dell'articolo riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:
        322756 Eseguire il backup e ripristino del Registro di sistema in Windows


        Nell'Editor del Registro di sistema individuare e fare quindi la seguente sottochiave del Registro di sistema:
        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
      4. Scegliere Nuovo, quindi chiave. Nel riquadro sinistro dell'Editor del Registro di sistema, si noti che nella nuova chiave #1 (il nome di una nuova sottochiave del Registro di sistema) sia selezionata per la modifica.
      5. Digitare ImageName Per sostituire una nuova chiave #1, quindi premere INVIO.

        Nota ImageName è un segnaposto per il nome dell'immagine del processo che ospita il servizio che si desidera eseguire il debug. Ad esempio, se si desidera eseguire il debug di un servizio ospitato da un processo che ha MyService.exe come nome dell'immagine, digitare MyService.exe.
      6. Pulsante destro del mouse sulla sottochiave del Registro di sistema creato nel passaggio e.
      7. Scegliere Nuovoe quindi fare clic su Valore stringa. Nel riquadro destro dell'Editor del Registro di sistema, si noti che sia selezionato nuovo valore #1, il nome di una nuova voce del Registro di sistema, per la modifica.
      8. Sostituire nuovo valore #1 con Debugger, quindi premere INVIO.
      9. Destro della voce del Registro di sistema Debugger creata al passaggio h e quindi fare clic su Modifica. Verrà visualizzata la finestra di dialogo Modifica stringa .
      10. Nella casella di testo dati valore digitare DebuggerPath, quindi scegliere OK.

        Nota DebuggerPath è un segnaposto per il percorso completo del debugger che si desidera utilizzare. Ad esempio, se si desidera utilizzare il debugger WinDbg per il debug di un servizio, è possibile digitare un percorso completo simile al seguente:
        C:\PROGRA~1\Debugg~1\windbg.exe
  2. Per la finestra del debugger venga visualizzato sul desktop, andto interagire con il debugger, rendere il servizio interattivo. Se youdo il servizio interattivo, il debugger verrà avviato ma si cannotsee e si desidera non eseguire comandi. Per rendere il servizio interattivo, utilizzare uno dei seguenti metodi:
    • Metodo 1: Utilizzare la console dei servizi
      1. Fare clic su Starte quindi scegliere programmi.
      2. Nel menu programmi , Strumentidi amministrazione e quindi fare clic su servizi. Verrà visualizzata la console servizi .
      3. Nel riquadro a destra della console di servizi , fare clic destroServiceName, quindi scegliere proprietà.

        Nota ServiceName è un segnaposto per il nome del servizio che si desidera eseguire il debug.
      4. Nella scheda Registro , fare clic per selezionare la casella di controllo Consenti al servizio di interagire col desktop con account di sistema localee quindi fare clic su OK.
    • Metodo 2: Utilizzare l'Editor del Registro di sistema
      1. Nell'Editor del Registro di sistema individuare e fare clic sulla sottochiave del Registro di sistema seguente:
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName
        Nota Sostituire ServiceName con il nome del servizio che si desidera eseguire il debug. Ad esempio, se si desidera eseguire il debug di un servizio denominato MyService, individuare e fare clic sulla chiave del Registro di sistema seguente:
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService
      2. Sotto il nome di campo nel riquadro di destra dell'Editor del Registro di sistema, fare clic destro tipoe quindi fare clic su Modifica. Verrà visualizzata la finestra di dialogo Modifica valore DWORD .
      3. Modificare il testo nella casella di testo dati valore per il risultato dell'operazione binaria con il valore binario del testo corrente e il valore binario, 0x00000100, come i due operandi. Il valore binario, 0x00000100, corrisponde alla costante SERVICE_INTERACTIVE_PROCESS definita nel file di intestazione Winnt. H nel computer in uso. Questa costante specifica che un servizio interattivo in natura.
  3. Quando si avvia un servizio, il servizio comunica a Gestione controllo per quanto tempo il servizio deve disporre per l'avvio (il tempo-outperiod per il servizio) theService. Se il gestore SCM non riceve un avviso "servizio avviato" dal servizio entro questo periodo di timeout, Gestione controllo theService termina il processo che ospita il servizio. Periodo di timeout di Thistime è in genere meno di 30 secondi. Se non regolare thistime periodo, Gestione controllo servizi termina il processo e theattached debugger mentre si sta tentando di eseguire il debug. Per regolare il tempo-outperiod, procedere come segue:
    1. Nell'Editor del Registro di sistema individuare e fare quindi la seguente sottochiave del Registro di sistema:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
    2. Scegliere Nuovoe quindi fare clic su Valore DWORD. Nel riquadro destro dell'Editor del Registro di sistema, si noti che sia selezionato nuovo valore #1 (il nome di una nuova voce del Registro di sistema) per la modifica.
    3. Digitare ServicesPipeTimeout Per sostituire di nuovo valore #1, quindi premere INVIO.
    4. Destro la voce del Registro di sistema ServicesPipeTimeout creata nel passaggio c e quindi fare clic su Modifica. Verrà visualizzata la finestra di dialogo Modifica valore DWORD .
    5. Nella casella di testo dati valore digitare TimeoutPeriod, quindi scegliere OK

      Nota TimeoutPeriod è un segnaposto per il valore del periodo di timeout (in millisecondi) che si desidera impostare per il servizio. Ad esempio, se si desidera impostare il periodo di timeout per 24 ore (86400000 millisecondi), digitare 86400000.
    6. Riavviare il computer. È necessario riavviare il computer per Gestione controllo servizi per applicare la modifica.
  4. Avviare il servizio Windows. A tale scopo, attenersi alla seguente procedura:
    1. Fare clic su Starte quindi scegliere programmi.
    2. Nel menu programmi , Strumentidi amministrazione e quindi fare clic su servizi. Verrà visualizzata la console servizi .
    3. Nel riquadro a destra della console di servizi , fare clic destroServiceName, quindi scegliere Avvia.

      Nota ServiceName è un segnaposto per il nome del servizio che si desidera eseguire il debug.
Torna all'inizio

Risoluzione dei problemi

Prima di tentare di eseguire il debug di un servizio attraverso una rete, assicurarsi che i simboli e l'origine file che il servizio utilizza areaccessible dal computer in cui verrà eseguito il servizio. A tale scopo, utilizzare uno dei seguenti metodi:
  • Concedere le autorizzazioni di accesso in lettura ad almeno a tutti gli utenti per la cartella sul computer che contiene i simboli e i file di origine utilizzato dal servizio.
  • Copiare questi simboli e i file che utilizza il servizio sul computer di origine in willrun il servizio.
Torna all'inizio
Riferimenti
Per scaricare gli strumenti e le utilità descritte in questo articolo, visitare il seguente sito Web Microsoft:
Strumenti di debug per Windows: Panoramica
http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx
Per ulteriori informazioni, visitare i seguenti siti Web Microsoft Developer Network (MSDN):
Utilizzo dell'utilità di flag globali
http://msdn2.microsoft.com/en-us/library/ms792858.aspx
Torna all'inizio

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 824344 - Ultima revisione: 05/21/2016 15:57:00 - Revisione: 7.0

Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Professional Edition, Microsoft Windows Server 2003, Enterprise Edition (32-bit x86), Microsoft Windows Server 2003, Standard Edition (32-bit x86), Microsoft Windows Server 2003, Datacenter Edition (32-bit x86), Microsoft Windows XP Home Edition, Microsoft Windows XP Professional

  • kbimghlp kbregistry kbservice kbdebug kbmisctools kbhowtomaster kbmt KB824344 KbMtit
Feedback