2

私の Visual Studio ソリューションには、'A' と 'B' の 2 つの C++ コンソール プロジェクトが含まれており、'A' はプログラムで B を開始します (CreateProcess() を使用)。

「B」が作成されたポイントの後に「A」のステップ実行を開始した場合、「B」プロジェクトのブレークポイントを検出して停止するにはどうすればよいですか?

現在、「B」の特定のポイントに「DebugBreak()」を貼り付けているだけですが、VS インスタンスを使用してアプリをデバッグできるウィンドウがポップアップするまでに通常時間がかかるため、これはかなり面倒です。現在のインスタンスが表示されないため、さらに時間がかかる別のインスタンスを開始する必要があります。

「B」が起動し、そのことを実行してから閉じるのが速すぎるため、プロセスにアタッチを使用できません。

プロジェクトが自動的にアタッチされるようにマークして、たとえばメインの先頭にブレークポイントを設定できるようにする方法はありますか (メインの先頭の DebugBreak と同様)。

4

2 に答える 2

0

MSDN で次のメモを見つけました。

デバッガーは、子プロジェクトが同じソリューション内にある場合でも、デバッグされたプロセスによって開始された子プロセスに自動的にアタッチしません。子プロセスをデバッグするには:

  • 開始された後に子プロセスにアタッチします。
  • -また-
  • デバッガーの新しいインスタンスで子プロセスを自動的に開始するように Windows を構成します。

後者は、レジストリの干渉によって明らかに達成できます: デバッガーでプロセスを自動的に開始する

于 2013-11-09T18:59:56.087 に答える
0

Visual Studio チームは、子プロセスを現在のデバッガーに自動的にアタッチできるようにする Visual Studio 拡張機能をリリースしました: Child Process Debugging Power Tool の紹介

Visual Studio 2013以降のギャラリーで利用できます。

したがって、プロジェクト A からプロジェクト B を開始するとProcess.Start、この 2 番目のプロセスにデバッガーが自動的にアタッチされます。

于 2015-08-21T08:33:00.010 に答える