0

問題(來自的NuGet PowerShell中):附加VS2010到IE9使用PowerShell調試JavaScript的

  • 啓動IIS快遞(網站是一個文件夾中)[完成]
  • 推出IE9的URL [完成]
  • 附加電流VisualStudio的實例,IIS調試.NET代碼[完成]
  • 重視當前的VisualStudio實例IE9調試Javascript代碼[問題]

Status:

目前我可以從PowerShell(帶$ DTE對象)將VS附加到IIS和IE9選項卡進程。然而,我無法調試JavaScript代碼(我認爲VS默認情況下只能調試.net代碼而不是腳本)。

我看到了EnvDTE80.Transport,但我不知道如何在nuget PowerShell中使用它。 你有任何想法來調試js嗎?或者對問題採取完全不同的方法?

更新(8月8日): 我能夠連接到IE9調試JS但是我發現我的問題是完全不同的:

  • 我運行IIS快遞使用PowerShell
  • 我跑IE9使用PowerShell
  • 我能得到的「過程」 ES對象

但我調試太早附加到進程和調試不起作用。

  • 我試過(即)啓動IIS Express,啓動IE9,首先附加到IIS,然後附加到IE9。現在我可以調試腳本,但不能IIS Express。
  • 在將DTE附加到進程之前,我試圖停止腳本5秒(Start-Sleep -s 5),現在我可以調試IE js和IIS。但我不喜歡睡眠解決方案(多少秒?)。

回答

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 
0

我使用Firebug調試JavaScript在Firefox。 Chrome與它有同等的地位。 從來沒有在IE瀏覽器嘗試過,但我認爲有一個用於IE瀏覽器的Firebug版本。

查看該問題:Firebug equivalent for Internet Explorer