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