Share via


Destinazioni remote

Esistono due forme diverse di debug remoto, a seconda del computer (client remoto o server) è il computer host. Il computer host è il computer in cui è attivo il motore del debugger . Nell'altro computer, il motore del debugger funge semplicemente da comando di inoltro proxy e dati al motore host.

Tutte le operazioni del debugger, ad esempio l'esecuzione di comandi e estensioni e il caricamento dei simboli, vengono eseguite dal motore host. Una sessione del debugger è relativa anche al motore host.

Per elencare i server di debug e i server di elaborazione attualmente in esecuzione in un computer, usare OutputServers.

Debug di server e client di debug

Un server di debug è un'istanza del motore del debugger che funge da host e in ascolto delle connessioni dai client di debug. Il metodo StartServer indicherà al motore del debugger di avviare l'ascolto delle connessioni dai client di debug.

Un client di debug è un'istanza del motore di debugger che funge da proxy, inviando comandi debugger e I/O al server di debug. La funzione DebugConnect può essere usata per connettersi al server di debug.

L'oggetto client restituito da DebugConnect non viene aggiunto automaticamente alla sessione del debugger nel server di debug. Il metodo ConnectSession può essere usato per partecipare alla sessione, sincronizzare l'input e l'output.

La comunicazione tra un server di debug e un client di debug è costituita principalmente da comandi debugger e chiamate RPC inviate al server e dall'output dei comandi inviato al client.

Server di elaborazione, server di connessione kernel e client intelligenti

I server di elaborazione e i server di connessione kernel sono entrambe istanze del motore del debugger che fungono da proxy, in ascolto delle connessioni da client intelligenti e l'esecuzione di operazioni di memoria, processore o sistema operativo, come richiesto da questi client remoti. Un server di elaborazione facilita il debug dei processi in esecuzione nello stesso computer. Un server di connessione kernel facilita il debug di una destinazione di debug del kernel Windows connessa al computer che esegue il server di connessione. È possibile avviare un server di elaborazione usando il metodo StartProcessServer o il programma DbgSrv. Il metodo WaitForProcessServerEnd attenderà la fine di un server di elaborazione avviato con StartProcessServer . È possibile attivare un server di connessione kernel usando il programma KdSrv.

Un client intelligente è un'istanza del motore del debugger che funge da motore host e connessa a un server di elaborazione. Il metodo ConnectProcessServer si connetterà a un server di elaborazione. Dopo la connessione, è possibile usare i metodi descritti in Destinazioni live User-Mode .

Al termine del client remoto con il server di elaborazione, può disconnettersi tramite DisconnectProcessServer oppure usare EndProcessServer per richiedere l'arresto del server di elaborazione. Per arrestare il server di elaborazione dal computer in esecuzione, usare Task Manager per terminare il processo. Se l'istanza del motore di debugger che ha usato StartProcessServer è ancora in esecuzione, può usare Execute per rilasciare il comando debugger .endrv 0, che termina il server di elaborazione (si tratta di un'eccezione al comportamento consueto di .endrv, che in genere non influisce sui server di elaborazione).

La comunicazione tra un server di elaborazione e un client intelligente è in genere costituita da operazioni di memoria, processore e sistema operativo di basso livello e richieste inviate dal client remoto al server. I risultati vengono quindi inviati al client.