最適なリレーショナル モデルデバッグ メソッドの選択
リモート デバッグを実行するには 2 つの主要メソッドと、いくつかの追加メソッド、および膨大な数の組み合わせメソッドがあります。
最適な手法を選択するのに役立つヒントを次に示します。
通常、デバッガー を使用したリモート デバッグが最適な方法です。 単に 1 つのサーバーと 1 つのクライアントがあり、互いに自由に接続でき、クライアントとサーバーの両方に同じデバッガー バイナリがインストールされ、クライアントを操作するデバッグ技術者がサーバーのある部屋の誰かと会話できるのであれば、この方法が推奨されます。
クライアントとサーバーは、任意のバージョンの Windows を実行できます。 互いに同じバージョンを実行している必要はありません。
クライアントがサーバーに接続要求を送信できないが、サーバーがクライアントに要求を送信できる場合は、clicon パラメーターを使用することにより、逆接続でデバッガーを介したリモート デバッグを使用できます。
remote.exe によるリモート デバッグは、コマンド プロンプト ウィンドウをリモートで制御するために使用されます。 KD、CDB、または NTSD をリモートで制御するために使用できます。 WinDbg では使用できません。
クライアントにデバッガー バイナリのコピーがない場合は、remote.exe メソッドを使用する必要があります。
デバッグ技術者がサーバーのある部屋で誰かと話すことができない場合は、プロセス サーバーまたは KD 接続サーバーを使用できます。 実際のデバッグ作業はすべてクライアント (スマート クライアントと呼ばれます) によって行われます。これにより、サーバー自体に 2 人目が存在する必要がなくなります。
プロセス サーバーは、ユーザー モードのデバッグに使用されます。KD 接続サーバーは、カーネル モードのデバッグに使用されます。 この違い以外、両者は似たような動作をします。
このメソッドは、サーバーが稼働しているコンピューターが大量のプロセス負荷を処理できない場合や、クライアントを実行している技術者が、サーバーからアクセスできない機密のシンボル ファイルやソース ファイルにアクセスできる場合にも役立ちます。 ただし、このメソッドは、デバッガーを介したリモート デバッグほど高速ではなく効率的でもありません。 このメソッドは、ダンプ ファイルのデバッグには使用できません。
詳細については、「プロセス サーバー (ユーザー モード)」と「KD 接続サーバー (カーネル モード)」を参照してください。
リピータ は、2 台のコンピューター間でデータを中継する軽量プロキシ サーバーです。 デバッガーを使用してリモート デバッグを実行している場合、またはプロセス サーバーを使用している場合は、クライアントとサーバーの間にリピータを追加できます。
クライアントとサーバーの直接のやり取りはできないが、それぞれが外部のコンピューターにアクセスできる場合は、リピータの使用が必要になることがあります。 リピータとの逆接続も使用できます。 連続して 2 つのリピータを使用することもできますが、これはほとんど必要ありません。
詳細については、「リピータ」を参照してください。
カーネル デバッガーから CDB (または NTSD) を制御することもできます。 これは、リモート デバッグのもう 1 つの形式です。 詳細については、「カーネル デバッガー からのユーザーモード デバッガーの制御」を参照してください。
これらのすべてのメソッドのバリエーションが可能です。
複数のコンピューターを連結して、複数のトランスポート メソッドを利用することもできます。 技術者がいる場所、シンボルが配置されている場所、特定の方向への接続を妨げるファイアウォールがあるかどうかを考慮に入れる複雑なトランスポート シーケンスを作成できます。 いくつかの例については、「高度なリモート デバッグ シナリオ」を参照してください。
1 台のコンピューターでリモート デバッグを実行することもできます。 たとえば、低い権限のプロセス サーバーを起動し、高い権限のスマート クライアントでサーバーに接続すると便利な場合があります。