2

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

如果我在创建“B”之后开始单步执行“A”,如何检测并停止“B”项目中的断点?

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

我不能使用附加来处理,因为'B'启动,做它的事情然后关闭太快。

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

4

2 回答 2

0

我在 MSDN 上找到了这个注释:

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

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

后者显然可以通过一些注册表干预来完成: 在调试器中自动启动一个进程

于 2013-11-09T18:59:56.087 回答
0

Visual Studio 团队发布了一个 Visual Studio 扩展,允许自动将子进程附加到当前调试器:引入子进程调试电源工具

它在Visual Studio 2013 及更高版本的图库中可用。

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

于 2015-08-21T08:33:00.010 回答