Debug remoto con WinDbg

Il debug remoto prevede due debugger in esecuzione in due posizioni diverse. Il debugger che esegue il debug è denominato server di debug. Il secondo debugger, denominato client di debug, controlla la sessione di debug da una posizione remota. Per stabilire una sessione remota, è prima necessario configurare il server di debug e quindi attivare il client di debug.

Il codice di cui è in corso il debug potrebbe essere in esecuzione nello stesso computer che esegue il server di debug oppure potrebbe essere in esecuzione in un computer separato. Se il server di debug esegue il debug in modalità utente, il processo sottoposto a debug può essere eseguito nello stesso computer del server di debug. Se il server di debug esegue il debug in modalità kernel, il codice sottoposto a debug viene in genere eseguito in un computer di destinazione separato.

Il diagramma seguente illustra una sessione remota in cui il server di debug, in esecuzione in un computer host, esegue il debug in modalità kernel del codice in esecuzione in un computer di destinazione separato.

Diagramma che illustra i computer remoti, host e di destinazione connessi per il debug in modalità kernel.

Esistono diversi protocolli di trasporto che è possibile usare per una connessione di debug remoto: TCP, NPIPE, SPIPE, SSL e porta COM. Si supponga di aver scelto di usare TCP come protocollo ed è stato scelto di usare WinDbg sia come client di debug che come server di debug. È possibile usare la procedura seguente per stabilire una sessione di debug in modalità kernel remota:

  1. Nel computer host aprire WinDbg e stabilire una sessione di debug in modalità kernel con un computer di destinazione. (Vedere Debug in modalità kernel live con WinDbg (versione classica))

  2. Eseguire l'interruzione scegliendo Interrompi dal menu Debug o premendo CTRL-INTERR.

  3. Nella finestra di comando del debugger immettere il comando seguente.

    .server tcp:port=5005

    Nota Il numero di porta 5005 è arbitrario. Il numero di porta è la scelta.

  4. WinDbg risponderà con output simile al seguente.

    Server started.  Client can connect with any of these command lines
    0: <debugger> -remote tcp:Port=5005,Server=YourHostComputer
    
  5. Nel computer remoto aprire WinDbg e scegliere Connetti a sessione remota dal menu File .

  6. In Stringa di connessione immettere la stringa seguente.

    tcp:Port=5005,Server=YourHostComputer

    dove YourHostComputer è il nome del computer host, che esegue il server di debug.

    Seleziona OK.

Uso della riga di comando

In alternativa alla procedura descritta nella sezione precedente, è possibile configurare una sessione di debug remoto nella riga di comando. Si supponga di essere configurato per stabilire una sessione di debug in modalità kernel, tra un computer host e un computer di destinazione, su un cavo 1394 sul canale 32. È possibile utilizzare la procedura seguente per stabilire una sessione di debug remoto:

  1. Nel computer host immettere il comando seguente in una finestra del prompt dei comandi.

    windbg -server tcp:port=5005 -k 1394:channel=32

  2. Nel computer remoto immettere il comando seguente in una finestra del prompt dei comandi.

    windbg -remote tcp:Port=5005,Server=YourHostComputer

    dove YourHostComputer è il nome del computer host, che esegue il server di debug.

Importante

Il trasporto 1394 è disponibile per l'uso in Windows 10 versione 1607 e precedenti. Non è disponibile nelle versioni successive di Windows. È consigliabile eseguire la transizione dei progetti ad altri trasporti, ad esempio KDNET tramite Ethernet. Per altre informazioni sul trasporto, vedere Configurazione automatica del debug del kernel di rete KDNET.

Informazioni aggiuntive

Esistono molti modi per stabilire il debug remoto diversi da quelli illustrati in questo argomento. Per informazioni complete sulla configurazione di un server di debug nella finestra di comando del debugger WinDbg, vedere .server (Crea server di debug). Per informazioni complete sull'avvio di WinDbg (e sulla definizione del debug remoto) nella riga di comando, vedere Opzioni della riga di comando di WinDbg.