使用PowerShell将VS2010附加到IE9以调试javascript

Attach VS2010 to IE9 with PowerShell to debug javascript

本文关键字:IE9 调试 javascript PowerShell VS2010 使用      更新时间:2024-04-22

问题(来自nuget PowerShell):

  • 启动IIS Express(网站位于文件夹中)[完成]
  • 将IE9启动到URL[完成]
  • 将当前的VisualStudio实例附加到IIS以调试.net代码[done]
  • 将当前的VisualStudio实例附加到IE9以调试Javascript代码[问题]

状态:

目前,我能够从powershell(带有$DTE对象)将VS附加到IIS和IE9选项卡进程。然而,我无法调试javascript代码(我认为VS默认情况下只调试.net代码,而不调试Script)。

我看到了EnvDTE80.Transport,但我不知道如何在nuget PowerShell中使用它。你有调试js的想法吗?还是用完全不同的方法来解决这个问题?

更新(8月8日):我可以连接到IE9调试js,但我发现我的问题完全不同:

  • 我使用powershell运行IIS Express
  • 我使用powershell运行IE9
  • 我可以得到"进程"的对象

但是我过早地将调试器附加到进程上,调试不起作用。

  • 我尝试(即)启动IIS Express,启动IE9,先连接到IIS,然后连接到IE9。现在我可以调试脚本,但不能调试到IIS Express
  • 在将DTE连接到进程之前,我尝试停止脚本5秒钟(StartSleep-s5),现在我可以调试IE js和IIS了。但我不喜欢睡眠解决方案(多少秒?)

我没有通过VS对象模型做到这一点,但通过GUI,当你连接到像IE9这样的运行进程时,你可以选择你想要的调试器类型。在这种情况下,您需要"脚本"调试器。如果这可以通过GUI来完成,那么我怀疑它可以通过对象模型来完成。VS中的宏记录器非常适合处理这样的事情。当我通过GUI执行附加步骤时,我打开了它,得到了这个:

Sub TemporaryMacro()
    Try
        Dim dbg2 As EnvDTE80.Debugger2 = DTE.Debugger
        Dim trans As EnvDTE80.Transport = dbg2.Transports.Item("Default")
        Dim dbgeng(1) As EnvDTE80.Engine
        dbgeng(0) = trans.Engines.Item("Script")
        Dim proc2 As EnvDTE80.Process2 = dbg2.GetProcesses(trans, "HILLR1").Item("iexplore.exe")
        proc2.Attach2(dbgeng)
    Catch ex As System.Exception
        MsgBox(ex.Message)
    End Try
End Sub

我使用firebug在Firefox中调试Javascript。Chrome也有类似的功能。从未在IE中尝试过,但我认为IE有一个Firebug版本。

检查这个问题:Firebug等价于InternetExplorer