调试结束时杀死子进程

时间:2011-10-31 15:17:32

标签: visual-studio visual-studio-2008 debugging macros

我在Visual Studio 2008中有一个C ++项目,在执行时会产生另一个进程(由于正在使用的GUI库)。但是,当我退出主进程(使用Ctrl-C或停止调试器)时,生成的进程(以及GUI)仍然存在。这是所使用的库的副作用,以及项目的性质 - 它被设计为嵌入式,因此从未真正“退出”,但调试和测试是基于Windows的。然后孤儿进程阻止我再次运行软件,而不会先杀死它。

使用Process Explorer我可以看到生成的进程是正在调试的进程的子进程。我想要一种方法,当我结束项目调试时,杀死所有子进程。

Chromium项目有一个宏grab child processes以便附加到它们。这被设计为与VS GUI中的按钮相关联,并且似乎是特定于chrome的(即,对于不同的项目/父进程,您将需要不同的按钮)。

我已经研究过使用DebuggerProcessEvents::OnProcessStateChanged宏,这个想法是当调试器停止时,我可以使用与Chromium宏类似的想法来处理子进程,并且< evil voice>杀死它们< / evil语音> ...但这个事件似乎永远不会被触发。

有什么想法?该项目是基于Makefile的,因为代码是在Visual Studio之外生成的,所以我将限制我可以按项目设置的选项。

0 个答案:

没有答案