.attach (プロセスにアタッチ)
.attach コマンドは、新しいターゲット アプリケーションにアタッチします。
.attach [-premote RemoteOptions] AttachOptions PID
パラメーター
RemoteOptions
アタッチ先のプロセス サーバーを指定します。 オプションは、コマンド ライン の-premote オプションのオプションと同じです。 構文の詳細については、スマート クライアントのアクティブ化を参照してください。
AttachOptions
アタッチの実行方法を指定します。 これには、次のオプションのいずれかを含めることができます:
-b
ターゲット プロセスにアタッチするときにデバッガーが最初のブレークインを要求できないようにします。 これは、アプリケーションが既に中断されている場合や、ターゲットにブレークイン スレッドを作成しないようにする場合に便利です。
-e
既にデバッグされているプロセスにデバッガーをアタッチできるようにします。 詳細については、ターゲット アプリケーションへの再アタッチを参照してください。
-k
ローカル カーネル デバッグ セッションを開始します。 詳細については、「ローカル カーネル デバッグの実行」を参照してください。
-f
アタッチされている新しいターゲットを除く、すべてのターゲット アプリケーションのすべてのスレッドをフリーズします。 これらのスレッドは、新しく接続されたプロセスで例外が発生するまで凍結されたままになります。 初期ブレークポイントは例外として修飾されることに注意してください。 ~u (Unfreeze Thread) コマンドを使用して、個々のスレッドをフローゼン解除できます。
-r
デバッガーがアタッチされたときに、実行中のターゲット プロセスを開始します。 これは、アプリケーションが既に中断されていて、実行を再開したい場合に便利です。
-v
指定されたプロセスを一時的にデバッグします。
PID
新しいターゲット アプリケーションのプロセス ID を指定します。
Environment
項目 | 説明 |
---|---|
モード | ユーザー モードのみ |
対象 | ライブ デバッグのみ |
プラットフォーム | すべて |
解説
このコマンドは、CDB が休止状態の場合、または既に 1 つ以上のプロセスをデバッグしている場合に使用できます。 WinDbg が休止状態の場合は使用できません。
このコマンドが成功すると、次回デバッガーが実行コマンドを発行するときに、デバッガーは指定されたプロセスに接続します。 このコマンドを 1 行に複数回使用する場合は、このコマンドが使用された回数限り実行を要求する必要があります。
非拡張デバッグ中は実行が許可されないため、デバッガーは一度に複数のプロセスを非効率的にデバッグすることはできません。 これは、.attach -v コマンドを使用すると、既存の侵入デバッグ セッションがあまり役に立たない可能性があることを意味します。
一部のスレッドが固定または中断されていない限り、複数のターゲット プロセスは常に一緒に実行されます。
新しいプロセスに接続し、既存のターゲットをすべてフリーズしたい場合は、-f オプションを使用します。 たとえば、クライアント アプリケーションでクラッシュをデバッグしていて、クライアント アプリケーションの実行を続行せずにサーバー プロセスにアタッチしたい場合があります。
-premote オプションを使用する場合、新しいプロセスは新しいシステムの一部になります。 詳細については、複数のターゲットのデバッグを参照してください。