いくつかのプロセスを生成するプログラムを作成しました。
既定では、Visual Studio は新しいプロセスをデバッグせず、新しいプロセスを作成した元のプロセスのみをデバッグします。
プロセスが作成されたときに、コードで Visual Studio をプロセスに自動的に接続する方法はありますか?
いくつかのプロセスを生成するプログラムを作成しました。
既定では、Visual Studio は新しいプロセスをデバッグせず、新しいプロセスを作成した元のプロセスのみをデバッグします。
プロセスが作成されたときに、コードで Visual Studio をプロセスに自動的に接続する方法はありますか?
From: Visual Studio の CreateProcess で生成されたプロセスのデバッグ
一時的に、子プロセスのスタートアップ コードのどこかに DebugBreak() の呼び出しを入れることができます。これにより、そのプロセスをデバッグするかどうかを確認するメッセージが Windows から表示されます。
編集:
両方のプロジェクトが同じソリューション内にあるため、マルチプロジェクト デバッグ用に VS を構成します: (VS2010) [選択] でソリューション ノードをコンテキスト
クリックSolution Explorer
します
。にSet Startup Projects...
Multiple startup projects
Action
Start
これでもプロンプトが表示されますが、デバッガーがアタッチされます。
if (!Debugger.IsAttached && DebuggerFlagSet()) Debugger.Launch();
そして、親プロセスで
if(Debugger.IsAttached)
SetDebuggerFlag()
ディスク/レジストリキー/ミューテックスなどのファイルなど、デバッガーフラグのメカニズムが必要になります。
起動されるデバッガーは、最初のインスタンスと同じではありません。
これを行うには、VSアドインまたはVSパッケージを作成する必要があります。これは、バックグラウンドで子プロセスが読み込まれるのを待つ必要があるためです。
これがあなたがやりたいことの一般的なレシピです:
uint processID = DTE.Debugger.CurrentProcess.ProcessID
)ManagementEventWatcher
で説明されているように、を使用して新しいプロセスの作成をリッスンします。クエリは次のようになります"SELECT ProcessID FROM Win32_ProcessStartTrace WHERE ParentProcessID = " + processID
DTE.Debugger.LocalProcesses
、それを呼び出します.Attach()
。