使用PowerShell将VS2010连接到IE9以调试javascript

时间:2012-07-27 09:23:25

标签: javascript visual-studio-2010 powershell visual-studio-debugging

问题(来自nuget PowerShell):

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

状态:

目前我可以从powershell(带有$ DTE对象)将VS附加到IIS和IE9选项卡进程。但是我无法调试javascript代码(我认为VS默认只调试.net代码而不是脚本)。

我看过EnvDTE80.Transport,但我不知道如何在nuget PowerShell中使用它。 你有任何调试js的想法吗?或者采用完全不同的方法解决问题?

更新(8月8日): 我能够附加到IE9调试js但是我发现我的问题完全不同了:

  • 我使用powershell运行IIS Express
  • 我使用powershell运行IE9
  • 我可以获得“处理”对象

但我过早地将调试器附加到进程并且调试不起作用。

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

2 个答案:

答案 0 :(得分:1)

我没有通过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

答案 1 :(得分:0)

我使用firebug在Firefox中调试Javascript。 Chrome有同等的价值。 从未在IE中尝试过,但我认为IE有一个Firebug版本。

请检查此问题:Firebug equivalent for Internet Explorer