1

私は現在、ActiveMQ を介して通信する 5 つの個別の実行可能ファイルで構成されるアプリケーションを開発しています。5 つの実行可能プロジェクトを含む Visual Studio ソリューションがあります。プロジェクトの 1 つ (launcher.exe) は、ローカル フォルダーから別のプロセスとして他の 4 つのプロジェクトを起動します。そのため、ランチャー プロジェクトは「スタートアップ プロジェクト」として設定されます。その結果、VS2005 に関する知識が限られているため、ブレーク ポイントを設定してデバッグできるのはこのプロジェクトだけです。

ランチャー プロジェクトが VS から実行される唯一のプロジェクトである場合、単一の VS ソリューションで 5 つの C++ プロジェクトに複数のブレークポイントを設定し、それらを同時にデバッグする方法はありますか?

注: Visual Studio を介して各プロジェクトの新しいインスタンスを手動で開始することはできません。それらの実行は launcher.exe によって同期される必要があるためです。

これが複雑な場合は申し訳ありませんが、説明できるのはこれが最善です。よろしくお願いします。

4

3 に答える 3

5

必要なものは [ツール] メニューにあります: [プロセスにアタッチ]。これにより、実行中のプロセスのリストが表示され、デバッガーをそれらのプロセスにアタッチできます。

ローカル デバッグの場合、Transport と Qualifier はデフォルト値を保持する必要があります。リストのすぐ上にある [接続先] の値によって、実行するデバッグの種類が決まります (ネイティブまたはマネージドが最も一般的な種類です)。通常、デバッガーはここでも適切な既定値を見つけ出すことができます。

主な興味深い部分はプロセスのリストです。このリストで、デバッグしたいサブプロセスを探します。プロセスを見つけて選択したら、右下隅にある [アタッチ] をクリック (またはプロセスをダブルクリック) すると、デバッガーがそのプロセスにアタッチされ、デバッグが開始されます。

また、接続されているさまざまなプロセスやスレッドにデバッガーのフォーカスを変更する方法を提供する [デバッグの場所] ツールバーも有効にすることをお勧めします。1 つの Visual Studio インスタンス内でのマルチプロセスのデバッグは難しい場合があるため、個別のインスタンスを開始して、それぞれのプロセスをデバッグすることを常に検討できます。

これのもう 1 つの厄介な側面は、サブプロセスの最初の起動をデバッグすることです。多くの場合、デバッガーをアタッチする前にデバッグしたいことが発生するため、準備が整うまでプロセスを待機させる何らかの方法が必要です。C++ でこれを行う簡単な方法は、IsDebuggerPresent 関数を使用することです。このコードを main() 関数 (または同等のもの) の最初に追加してみてください。

while( !IsDebuggerPresent() )
    Sleep( 500 );

または、C# の場合は次のコードを試してください。

while( !System.Diagnostics.Debugger.IsAttached )
    System.Threading.Thread.Sleep( 500 );
于 2008-10-24T01:14:09.637 に答える
1

ランチャーを手動で (Visual Studio の外部で、または <ctrl-f5> を使用して) 実行し、起動後にデバッグするプロセスにアタッチすることで、一度に 1 つずつ選択できます。ソリューション内のプロジェクトの 1 つである場合は、ブレークポイントを設定でき、デバッガーをアタッチしたときにそれらが取得されます。

于 2008-10-24T01:15:00.760 に答える
1

ご存知でしたか? 複数のプロジェクトのデバッグを開始できますか? - #268

于 2008-10-24T02:11:56.307 に答える