调试当前项目启动的进程

时间:2013-11-09 16:24:03

标签: c++ visual-studio debugging

我的Visual Studio解决方案包含两个C ++控制台项目,'A'和'B',其中'A'以编程方式启动B(使用CreateProcess())。

如果我在创建'B'之后开始单步执行'A',我怎样才能检测到'B'项目中的断点并停在?

目前我只是在'B'中的特定点粘贴“DebugBreak()”,但这很烦人,因为通常需要一段时间弹出该窗口,允许您使用VS实例调试应用程序,并且通常它不会显示当前实例,因此我必须启动另一个需要更长时间的实例。

我无法使用附加处理,因为'B'启动,执行它然后关闭太快。

是否有任何标记要自动附加的项目,例如我可以在main的开头有一个断点(类似于main开头的DebugBreak)?

2 个答案:

答案 0 :(得分:0)

我在MSDN上发现了这个说明:

  

调试器不会自动附加到由调试进程启动的子进程,即使子项目位于同一解决方案中也是如此。调试子进程:

     
      
  • 启动后附加到子进程。
  •   
  • - 或 -
  •   
  • 将Windows配置为在调试器的新实例中自动启动子进程。
  •   

后者显然可以通过一些注册表干预来完成: Automatically start a process in the debugger

答案 1 :(得分:0)

Visual Studio团队发布了一个Visual Studio扩展,允许自动将子进程附加到当前调试器:Introducing the Child Process Debugging Power Tool

Visual Studio 2013及更高版本的Gallery可以使用它。

因此,您可以使用Process.Start从项目A启动项目B,它会自动将调试器附加到第二个过程。