リモート ターゲット

どのコンピュータ (リモート クライアントまたはサーバー) がホスト コンピュータであるかに応じて、リモート デバッグには 2 つの異なる形式があります。 ホスト コンピューターは、デバッガー エンジンがアクティブになっているコンピューターです。 もう一方のコンピューターでは、デバッガー エンジンはコマンドとデータをホスト エンジンに中継するプロキシとして機能しているだけです。

コマンドや拡張機能の実行、シンボルの読み込みなどのすべてのデバッガ操作は、ホスト エンジンによって実行されます。 デバッガ セッションもホスト エンジンに関連しています。

コンピューター上で現在実行されているデバッグ サーバーとプロセス サーバーを一覧表示するには、OutputServers を使用します。

デバッグサーバーとデバッグクライアント

デバッグ サーバーは、ホストとして機能し、デバッグ クライアントからの接続をリッスンするデバッガー エンジンのインスタンスです。 StartServer メソッドは、デバッガ エンジンにデバッグ クライアントからの接続の待機を開始するように指示します。

デバッグ クライアントは、プロキシとして機能するデバッガー エンジンのインスタンスであり、デバッガー コマンドと I/O をデバッグ サーバーに送信します。 DebugConnect 関数を使用してデバッグ サーバーに接続できます。

DebugConnect によって返されたクライアント オブジェクトは、デバッグ サーバー上のデバッガー セッションに自動的に参加しません。 ConnectSession メソッドを使用してセッションに参加し、入力と出力を同期できます。

デバッグ サーバーとデバッグ クライアント間の通信は、主に、サーバーに送信されるデバッガー コマンドと RPC 呼び出し、およびクライアントに返されるコマンド出力で構成されます。

プロセス サーバー、カーネル接続サーバー、およびスマート クライアント

プロセス サーバーカーネル接続サーバーはどちらもプロキシとして機能するデバッガー エンジンのインスタンスであり、スマート クライアントからの接続をリッスンし、これらのリモート クライアントの要求に応じてメモリ、プロセッサ、またはオペレーティング システムの操作を実行します。 プロセス サーバーを使用すると、同じコンピューター上で実行されているプロセスのデバッグが容易になります。 カーネル接続サーバーは、接続サーバーを実行しているコンピューターに接続されている Windows カーネル デバッグ ターゲットのデバッグを容易にします。 プロセス サーバーは、StartProcessServer メソッドまたはプログラム DbgSrv を使用して起動できます。 メソッド WaitForProcessServerEnd は、StartProcessServer で開始されたプロセス サーバーが終了するのを待ちます。 カーネル接続サーバーは、プログラム KdSrv を使用してアクティブ化できます。

スマート クライアントは、ホスト エンジンとして機能し、プロセス サーバーに接続されるデバッガー エンジンのインスタンスです。 ConnectProcessServer メソッドはプロセス サーバーに接続します。 接続すると、「ライブ ユーザー モード ターゲット」で説明されている方法を使用できるようになります。

リモート クライアントは、プロセス サーバーとの接続を終了すると、DisconnectProcessServer を使用して接続を切断したり、EndProcessServer を使用してプロセス サーバーのシャットダウンを要求したりできます。 プロセス サーバーを実行しているコンピューターからプロセス サーバーをシャットダウンするには、タスク マネージャーを使用してプロセスを終了します。 StartProcessServer を使用したデバッガー エンジンのインスタンスがまだ実行中の場合、Execute を使用してデバッガー コマンド .endsrv を発行し、プロセス サーバーを終了できます (これは .endsrv の通常の動作の例外であり、通常は影響しません) プロセスサーバー)。

プロセス サーバーとスマート クライアント間の通信は、通常、低レベルのメモリ、プロセッサ、オペレーティング システムの操作と、リモート クライアントからサーバーに送信される要求で構成されます。 結果はクライアントに返送されます。