Condividi tramite


Destinazioni remote

Esistono due forme diverse di debug remoto, a seconda di quale computer (client remoto o server) funge da host. Il computer host è il computer su cui è attivo il motore di debug . Nell'altro computer, il motore di debug funge semplicemente da proxy che inoltra comandi 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.

Debugging di server e client di debug

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

Un client di debugging è un'istanza del motore di debugging che funge da proxy, inviando comandi e I/O del debugger al server di debugging. 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, sincronizzando input e output.

La comunicazione tra un server di debug e un client di debug consiste principalmente in comandi del debugger e chiamate RPC inviate al server, e nell'output dei comandi inviato indietro al client.

Server di elaborazione, server di connessione kernel e client intelligenti

I server di processo e i server di connessione del kernel sono entrambe istanze del motore di debug che agiscono come proxy, ascoltando le connessioni dagli smart client ed eseguendo operazioni di memoria, processore o sistema operativo richieste 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 di Windows connessa al computer che esegue il server di connessione kernel. È possibile avviare un server di elaborazione usando il metodo API 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 smart client è un'istanza del motore del debugger che funge da motore host ed è connesso a un server di processo. Il metodo ConnectProcessServer si connetterà a un server di elaborazione. Dopo la connessione, è possibile usare i metodi descritti in Live User-Mode Targets.

Quando il client remoto ha terminato con il server di elaborazione, può disconnettersi usando DisconnectProcessServeroppure può usare EndProcessServer per richiedere lo spegnimento del server di elaborazione. Per arrestare il server di elaborazione dal computer in cui è in esecuzione, usare Gestione attività per terminare il processo. Se l'istanza del motore di debugger usata StartProcessServer è ancora in esecuzione, può usare Esegui per rilasciare il comando del debugger .endsrv 0, che terminerà il server di elaborazione (si tratta di un'eccezione al comportamento consueto di .endsrv, 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.