プロセス サーバーのアクティブ化

Windows 用のデバッグ ツールに含まれるプロセス サーバーは、DbgSrv (dbgsrv.exe) と呼ばれます。 プロセス サーバーをアクティブにするには、管理者特権でコマンド プロンプト ウィンドウを開き (管理者として実行)、dbgsrv コマンドを入力します。

管理者特権がなくてもプロセス サーバーをアクティブ化でき、デバッグ クライアントはサーバーに接続できます。 ただし、管理者特権でプロセス サーバーをアクティブ化しない限り、クライアントはプロセス サーバーを検出できません。 デバッグ サーバーを検出する方法については、「プロセス サーバーの検索」を参照してください。

DbgSrv は、名前付きパイプ (NPIPE)、TCP、COM ポート、セキュア パイプ (SPIPE)、および Secure Sockets Layer (SSL) などのいくつかのトランスポート プロトコルをサポートします。

dbgsrv -t npipe:pipe=PipeName[,hidden][,password=Password][,IcfEnable] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t tcp:port=Socket[,hidden][,password=Password][,ipversion=6][,IcfEnable] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t tcp:port=Socket,clicon=Client[,password=Password][,ipversion=6] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t com:port=COMPort,baud=BaudRate,channel=COMChannel[,hidden][,password=Password] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t spipe:proto=Protocol,{certuser=Cert|machuser=Cert},pipe=PipeName[,hidden][,password=Password] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t ssl:proto=Protocol,{certuser=Cert|machuser=Cert},port=Socket[,hidden][,password=Password] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t ssl:proto=Protocol,{certuser=Cert|machuser=Cert},port=Socket,clicon=Client[,password=Password] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

前述のコマンドのパラメーターには、次のような値があります。

pipe= PipeName
NPIPE または SPIPE プロトコルを使用している場合、PipeName は、パイプの名前として機能する文字列です。 各パイプ名は一意のプロセス サーバーを識別する必要があります。 パイプ名を再利用しようとすると、エラー メッセージが表示されます。 PipeName には、スペースまたは引用符を含めることはできません。 PipeNameに、数値の printf スタイルの書式コード (%x または%d ) を含めることができます。 プロセス サーバーはこれを DbgSrv のプロセス ID に置き換えます。 このような 2 番目のコードは、DbgSrv のスレッド ID に置き換えられます。

プロセス サーバーを実行しているコンピューターでファイルとプリンターの共有を有効にする必要があります。 コントロール パネルで、[ネットワークとインターネット]>、>[ネットワークと共有センター]、[詳細な共有設定] に移動します。 [ファイルとプリンターの共有をオンにする] を選択します。

port= ソケット
TCP または SSL プロトコルを使用する場合、ソケット は、ソケットポート番号です。

コロンで区切られたポートの範囲を指定することもできます。 DbgSrv は、この範囲内の各ポートが空いているかどうかをチェックします。 空きポートが見つかり、エラーが発生しなければ、プロセス サーバーが作成されます。 スマート クライアントは、サーバーへの接続に使用されている実際のポートを指定する必要があります。 実際のポートを決定するには、「プロセス サーバーの検索」で説明されているいずれかの方法を使用します。このプロセス サーバーが表示されると、ポートの後にコロンで区切られた 2 つの数字が続きます。 最初の番号は、実際に使用されるポートになります。2 番目は無視できます。 たとえば、ポートが =51:60 として指定され、ポート 53 が実際に使用されていると、検索結果には "port=53:60" が表示されます。 (clicon パラメーターを使用して逆接続を確立している場合、クライアントはこの方法でポートの範囲を指定できますが、プロセス サーバーは実際に使用されるポートを指定する必要があります。)

clicon= クライアント
TCP または SSL プロトコルを使用しclicon パラメーターを指定している場合は、逆方向の接続が開かれます。 これは、プロセス サーバーがクライアントに接続を開始させるのではなく、スマート クライアントに接続しようとすることを意味します。 これは、通常の方向の接続を妨げているファイアウォールがある場合に便利です。 Client は、スマート クライアントが存在するコンピューター、またはスマート クライアントが作成されるコンピューターのネットワーク名または IP アドレスを指定します。 2 つの最初の円記号 (\) は省略可能です。

プロセス サーバーが 1 つの特定のクライアントを探しているため、このメソッドを使用する場合、サーバーに複数のクライアントを接続することはできません。 接続が拒否された場合、または切断された場合は、プロセス サーバーを再起動する必要があります。 -QR コマンド ライン オプションを使用してすべてのアクティブなサーバーを表示すると、逆接続のプロセス サーバーは表示されません。

clicon を使用する場合は、プロセス サーバーを作成する前にスマート クライアントを起動するのが最善ですが、通常の順序 (クライアントの前にサーバー) でも構いません。

port= COMPort
COM プロトコルを使用している場合、COMPort は、使用する COM ポートを指定します。 プレフィックス "COM" は省略可能です。たとえば、"com2" と "2" の両方が受け入れられます。

baud= BaudRate
COM プロトコルを使用している場合、BaudRate は、接続が実行されるボー レートを指定します。 ハードウェアでサポートされている任意のボー レートが許可されます。

channel= COMChannel
COM プロトコルを使用している場合、COMChannel は、デバッグ クライアントとの通信に使用する COM チャンネルを指定します。 0 から 254 までの任意の値を指定できます。 異なるチャネル番号を使用して複数の接続に対して 1 つの COM ポートを使用することができます。 (これは、デバッグ ケーブルの COM ポートの使用とは異なります。その状況では、COM ポート内のチャネルを使用することはできません。)

proto= 議定書
SSL または SPIPE プロトコルを使用している場合、Protocol は、Secure Channel (S-Channel) プロトコルを指定します。 文字列 tls1、pct1、ssl2、または ssl3 のいずれかを指定できます。

Cert
SSL または SPIPE プロトコルを使用している場合、Cert は、証明書を指定します。 証明書の名前または証明書の拇印 (証明書のスナップインによって指定された 16 進数の文字列) のいずれかを指定できます。 構文 certuser=Cert を使用すると、デバッガーはシステムストア (既定のストア) で証明書を検索します。 構文 machuser=Cert を使用すると、デバッガーはマシンのストアで証明書を検索します。 指定した証明書は、サーバー認証をサポートする必要があります。

hidden
-QR コマンド ライン オプションを使用してすべてのアクティブなサーバーを表示すると、プロセス サーバーは表示されません。

password= パスワード
スマート クライアントでは、プロセス サーバーに接続するには、指定されたパスワードを入力する必要があります。 Password は、最大 12 文字の英数字文字列を指定できます。

警告TCP、NPIPE、または COM プロトコルでパスワードを使用すると、パスワードが暗号化されていないため、保護の量が少なくなります。 SSL または SPIPE プロトコルでパスワードを使用すると暗号化されます。 セキュリティで保護されたリモート セッションを確立する場合は、SSL または SPIPE プロトコルを使用する必要があります。

ipversion=6
(Windows 6.6.07 以前用のデバッグツールのみ) TCP を使用してインターネットに接続するときに、デバッガーに IP バージョン 4 でなく強制的にバージョン 6 を使用させます。 Windows Vista 以降のバージョンでは、デバッガーは自動的に IP バージョン 6 を既定値に設定しようとするため、このオプションは不要です。

IcfEnable
インターネット接続ファイアウォールがアクティブな場合に、TCP または名前付きパイプ通信に必要なポート接続を有効にします。 既定では、インターネット接続ファイアウォールはこれらのプロトコルで使用されるポートを無効にします。 IcfEnable が TCP 接続で使用されていると、デバッガーは Windows に Socket パラメーターで指定されたポートを開かせます。 IcfEnable が名前付きパイプ接続で使用されている場合、デバッガーは Windows に名前付きパイプに使用されるポート (ポート 139 および 445) を開かせます。 接続が終了しても、デバッガーはこれらのポートを閉じません。

-sifeo Executable
指定されたイメージのイメージ ファイル実行オプション (IFEO) 値を一時停止します。 Executable には、ファイル名拡張子を含む実行可能イメージのファイル名を含める必要があります。 -sifeo オプションを使用すると、IFEO 設定による再帰呼び出しを発生させることなく、-c オプションで作成されたイメージの IFEO デバッガーとして DbgSrv を設定できます。 このオプションは、-c が使用されている場合にのみ使用できます。

-c
DbgSrv で新しいプロセスを作成します。 これを使用して、デバッグするプロセスを作成できます。 これは、デバッガーから新しいプロセスを生成するのと似ていますが、このプロセスは作成時にデバッグされない点が異なります。 このプロセスをデバッグするには、その PID を特定し、スマート クライアントを起動してこのプロセスをデバッグするときに -p オプションを使用します。

s
新しく作成されたプロセスが直ちに一時停止します。 このオプションを使用する場合は、CDB をスマート クライアントとして使用し、-pb コマンド ライン オプションと -p PID を組み合わせてスマート クライアントを起動することをお勧めします。 コマンド ラインに -pb オプションを含めると、デバッガーがアタッチされたときにプロセスが再開されます。それ以外の場合は、~*m コマンドを使用してプロセスを再開できます。

AppCmdLine
作成するプロセスの完全なコマンド ラインを指定します。 AppCmdLine には Unicode 文字列または ASCII 文字列を指定でき、任意の印刷可能な文字を含めることができます。 -c[s] パラメーターの後に表示されるすべてのテキストは、文字列 AppCmdLine を形成するために取得されます。

-x
コマンド ラインの残りの部分が無視されます。 このオプションは、コマンド ラインに不要なテキストを追加する可能性があるアプリケーションから DbgSrv を起動する場合に便利です。

-pc
コマンド ラインの残りの部分が無視されます。 このオプションは、コマンド ラインに不要なテキストを追加する可能性があるアプリケーションから DbgSrv を起動する場合に便利です。 -pc が DbgSrv コマンド ラインの最後の要素である場合、構文エラーが発生します。 この制限を除けば、-pc-x と同じです。

1 台のコンピューター上で任意の数のプロセス サーバーを起動できます。 ただし、1 つのプロセス サーバーを任意の数のスマート クライアント (それぞれが異なるデバッグ セッションに関与している) で使用できるため、これは通常は必要ありません。