2013-11-09 57 views
2

我的Visual Studio解決方案包含兩個C++控制檯項目'A'和'B',其中'A'以編程方式啓動B(使用CreateProcess())。調試當前項目啓動的進程

如果我在'B'創建點之後開始逐步過'A',我該如何在'B'項目中檢測到斷點並停在?

目前我只是在'B'的特定點處粘貼一個「DebugBreak()」,但這很煩人,因爲通常需要一段時間纔會彈出該窗口,允許您使用VS實例調試應用程序,並且通常不會顯示當前實例,所以我必須啓動另一個需要更長的時間。

我不能使用附加進程,因爲'B'啓動,做它的事情,然後關閉太快。

是否有任何標記項目被自動附加,使我例如有一個斷點在主的開始(類似於主開始的DebugBreak)?

+0

您使用的是什麼版本的Visual Studio? – IInspectable

+0

我經常使用2010,但可以使用2012如果需要 – pastillman

+0

相關:http://stackoverflow.com/questions/23526300/how-to-programmatically-start-the-second-project-from-the-startup-project- in -t/32132756#32132756 –

回答

0

我發現這個便條上MSDN:

調試程序不會自動連接到由調試的進程啓動一個子進程,即使孩子的項目是在同一個解決方案。調試子進程:

  • 附加到子進程啓動後。
  • - 或 -
  • 將Windows配置爲在調試器的新實例中自動啓動子進程。

後者顯然可以通過一些註冊表干預來完成: Automatically start a process in the debugger

+0

我已經看到了,但實際上並沒有比DebugBreak更好。不管怎麼說,還是要謝謝你 :) – pastillman

0

在Visual Studio團隊已經發布了Visual Studio的擴展,允許子進程自動粘貼到當前的調試器:Introducing the Child Process Debugging Power Tool

它適用於Visual Studio 2013及更高版本的Gallery

因此,您可以從項目A啓動項目B並使用Process.Start,它會自動將調試器附加到第二個過程。

相關問題