Visual Studio:在进程生成时自动附加到进程

我想附加到一个进程(a.exe)一旦产卵,它是可以与VS? 我只知道过程的名字。 其实我想完成的是在C#代码中设置断点,但代码属于另一个可执行文件,将由当前正在运行的应用程序(c.exe)启动。 代码在初始化期间内,所以我不可能手动执行附加操作。

当我遇到这种情况之前(我控制了两个进程),我发现一个体面的解决方法是在产卵过程的入口点调用Debugger.Launch() 。 然后VS会popup一个对话框,让你重视这个过程。

MSDN有如何:自动启动debugging器 – 这将允许跳过繁忙工作点击确认对话框[无需closuresUAC或其他杂项]过多。

另一个不错的解决scheme是使用Visual Studio扩展“ReAttach”。 可以在这里find。

如果您的进程当前没有运行,则ReAttach会要求您启动它,并在其可用时立即附加。

当我在验收testing中启动控制台应用程序时,我一直在寻找一些方法来做到这一点。

我今天发现这个 – https://blogs.msdn.microsoft.com/visualstudioalm/2014/11/24/introducing-the-child-process-debugging-power-tool/

这是一个视觉工作室的附加,它工作的一种享受。 当我debugging验收testing(我使用resharpertesting运行器),并在启动的应用程序中放置一个断点时,我现在可以在同一个Visual Studio实例中debugging应用程序。

怎么样:在VS中打开a.exe项目,设置断点等,然后打开a.exe的项目属性debugging选项卡,并将命令设置为c.exe 。 然后点击Debug

不幸的是,我从来没有这样做,托pipe项目,所以我可以在这里的标志。 但是,这就是我如何处理非托pipe(C ++)项目。 我认为托pipedebugging器也应该支持它。

您也可以使用Windowsdebugging工具自带的gflags.exe util,只需要打开gflags.exe然后进入镜像文件input进程名称(a.exe)按Tab键并勾选debugging器checkbox,在TextBox中使用选项/ debugexe(即“C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe”/ debugexe)inputvspath。

一旦进程运行,自动可视化工作室将打开,您可以添加您的断点,然后按运行。

“Entrian Attach”是一个Visual Studio外接程序,它完成了这个工作 – 告诉它可执行文件的名称,并在程序启动的时候附加debugging程序,无论程序是如何启动的。

(披露:我是作者,我build立了Attach,因为我一直有这个问题!)

如果C#代码由非托pipe代码启动,那么请确保您选中“非托pipe代码debugging”@Project属性 – >debugging选项..

我真的很喜欢@RichieHindlebuild议的Entrian Attach,但是我也发现这个免费的工具可以做类似的事情。 它捕获debugging进程启动的所有进程。

产卵过程捕手: https ://marketplace.visualstudio.com/items?itemName = Brubtsov.SpawnedProcessCatcher

从VS 2013 SP2起,有一个免费的微软工具,它和前面提到的“派生的过程捕获器”一样 – 附加所有的进程,这些进程是由一个正在debugging的进程启动的。 注意:我只用非托pipeC ++testing了这个(完美的工作)。

Microsoftsubprocessdebugging电源工具

MSDN博客条目