在为媒体中心编写插件时,您的插件会在ehexthost.exe
中托管,此exe从ehshell.exe
启动,您无法直接启动它,而是将特殊参数传递给{{1} }它将在一个单独的进程中启动插件。
当我们调试media browser时,我发现附加到第二个进程的过程有点笨重,我知道Debugger.Attach以及我可以使用的一些special registry条目。
这两种方法都不符合我的法案。我想要的是按F5并让我当前的visual studio实例自动附加到子进程。可以这样做吗?
如果VS的插件允许我实现此功能,我会很高兴。
修改
我最终使用以下宏:
ehshell.exe
另外,我在博客上概述了如何get this going的流程。
答案 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”