Afgelegen doelen
Er zijn twee verschillende vormen van externe foutopsporing, afhankelijk van welke computer (externe client of server) de hostcomputer is. De hostcomputer is de computer waarop de foutopsporingsprogramma-engine actief is. Op de andere computer fungeert de foutopsporingsprogramma-engine alleen als een proxy voor het doorsturen van opdrachten en gegevens naar de hostengine.
Alle foutopsporingsprogrammabewerkingen, zoals het uitvoeren van opdrachten en extensiesen het laden van symbolen, worden uitgevoerd door de hostengine. Een debugsessie is ook relatief aan de host-engine.
Als u de foutopsporingsservers en processervers wilt weergeven die momenteel op een computer worden uitgevoerd, gebruikt u OutputServers.
Foutopsporing van servers en foutopsporingsclients
Een foutopsporingsserver is een exemplaar van de foutopsporingsprogramma-engine die fungeert als host en luistert naar verbindingen van foutopsporingsclients. De methode StartServer instrueert de debugger-engine om te beginnen met luisteren naar verbindingen van foutopsporingsclients.
Een foutopsporingsclient is een exemplaar van de debugger-engine die fungeert als een proxy, die opdrachten en I/O verzendt naar de foutopsporingsserver. De functie DebugConnect kan worden gebruikt om verbinding te maken met de foutopsporingsserver.
Het clientobject dat wordt geretourneerd door DebugConnect wordt niet automatisch toegevoegd aan de foutopsporingssessie op de foutopsporingsserver. De methode ConnectSession kan worden gebruikt om deel te nemen aan de sessie, het synchroniseren van invoer en uitvoer.
De communicatie tussen een foutopsporingsserver en een foutopsporingsclient bestaat voornamelijk uit foutopsporingsprogrammaopdrachten en RPC-aanroepen die naar de server worden verzonden en de uitvoer van de opdracht die naar de client wordt verzonden.
Processservers, kernelaansluitservers en Smart Clients
processervers en kernelverbindingsservers zijn beide exemplaren van de foutopsporingsprogramma-engine die fungeren als proxy's, luisteren naar verbindingen van slimme clients en het uitvoeren van geheugen-, processor- of besturingssysteembewerkingen zoals aangevraagd door deze externe clients. Een processerver vereenvoudigt de foutopsporing van processen die op dezelfde computer worden uitgevoerd. Een kernelverbindingsserver vergemakkelijkt de foutopsporing van een Windows-kernelfoutopsporingsdoel dat is verbonden met de computer waarop de verbindingsserver wordt uitgevoerd. Een processerver kan worden gestart met behulp van de API-methode StartProcessServer of het programma DbgSrv. De methode WaitForProcessServerEnd zal wachten op een processerver die is gestart met StartProcessServer om te beëindigen. Een kernelverbindingsserver kan worden geactiveerd met behulp van het programma KdSrv.
Een slimme client is een exemplaar van de foutopsporingsprogramma-engine die fungeert als een hostengine en is verbonden met een processerver. De methode ConnectProcessServer maakt verbinding met een processerver. Zodra de verbinding is gemaakt, kunnen de methoden die worden beschreven in Live User-Mode Doelen worden gebruikt.
Wanneer de externe client klaar is met de processerver, kan de verbinding worden verbroken met behulp van DisconnectProcessServerof kan deze EndProcessServer gebruiken om aan te vragen dat de processerver wordt afgesloten. Als u de processerver wilt afsluiten vanaf de computer waarop deze wordt uitgevoerd, gebruikt u Taakbeheer om het proces te beëindigen. Als het exemplaar van de debugger engine dat StartProcessServer heeft gebruikt en nog steeds actief is, kan het Uitvoeren gebruiken om het foutopsporingsprogramma-commando .endsrv 0uit te voeren, waardoor de processerver wordt beëindigd (dit vormt een uitzondering op het gebruikelijke gedrag van .endsrv, dat doorgaans geen invloed heeft op processervers).
De communicatie tussen een processerver en een slimme client bestaat doorgaans uit bewerkingen op laag niveau, processor en besturingssysteem en aanvragen die van de externe client naar de server worden verzonden. Hun resultaten worden vervolgens teruggestuurd naar de client.