在调试期间在Visual Studio中自动附加到子进程

时间:2009-01-08 00:30:31

标签: c# .net visual-studio debugging visual-studio-debugging

在为媒体中心编写插件时,您的插件会在ehexthost.exe中托管,此exe从ehshell.exe启动,您无法直接启动它,而是将特殊参数传递给{{1} }它将在一个单独的进程中启动插件。

当我们调试media browser时,我发现附加到第二个进程的过程有点笨重,我知道Debugger.Attach以及我可以使用的一些special registry条目。

这两种方法都不符合我的法案。我想要的是按F5并让我当前的visual studio实例自动附加到子进程。可以这样做吗?

如果VS的插件允许我实现此功能,我会很高兴。

修改

我最终使用以下宏:

ehshell.exe

另外,我在博客上概述了如何get this going的流程。

5 个答案:

答案 0 :(得分:38)

我会用一个宏。我重新定义了我的F5函数来附加到asp.net进程,而不是它通常执行的长版本/验证。这对我很有用,而且非常简单。

    For Each process In DTE.Debugger.LocalProcesses
        If (process.Name.IndexOf("aspnet_wp.exe") <> -1) Then
            process.Attach()
            Exit Sub
        End If
    Next

答案 1 :(得分:14)

对于VS2012,宏已被删除,但您仍然可以使用标准键盘快捷键快速完成。例如,要附加到iisexpress.exe:

Ctrl + Alt + p - 显示“附加到流程”对话框

i - 跳转到列表中以i开头的第一个进程(对我来说这是iisexpress.exe)

输入 - 附加

对于超级速度,您还可以Turn off Visual Studio Attach security warning when debugging IIS

答案 2 :(得分:11)

查看我编写的名为Lazy的VisualStudio插件。

答案 3 :(得分:2)

我正在外部生成的进程中调试C ++插件,该进程在启动时抛出异常而崩溃,这对我来说非常有用:

添加免费Reattach Extension for Visual Studio。要求它在启动之前重新连接到进程名称。它会弹出一个模态对话框,说它正在等待进程名称启动。

现在启动该进程,Visual Studio调试器将立即附加,捕获异常并命中断点。

(这也是在媒体插件中,异常通常是由Delphi上下文中的主机进程捕获并重新抛出,所以我需要在发生之前中断)。

答案 4 :(得分:0)

如果在visual studio中设置类似的内容,可以按F5自动附加到进程:

http://vvcap.net/db/ujYL7zeN_n_RgeprqCSM.htp

注意:“Command”填写为可执行文件名,“Attach”必须为“yes”