調試JavaScript/VB Script腳本程序(IE篇)JavaScript/VB Script腳本程序一般有兩種執行方式,一種是嵌入在宿主程序里面執行,比如在IE瀏覽器里面執行;另外一種,在資源管理器里面雙擊執行(雖然還是通過(guò)另外一個(gè)程序解釋執行,但是給人的感覺(jué)畢竟是直接運行)。
這兩種方式,都可以使用Visual Studio來(lái)進(jìn)行調試,先看大家用得比較頻繁的網(wǎng)頁(yè)腳本程序的調試:
1. 要調試網(wǎng)頁(yè)里面的腳本程序,調試器需要宿主程序—這里也就是IE的支持,實(shí)際上所有的腳本程序解釋器都實(shí)現了一個(gè)COM的調試接口。調試器通過(guò)查詢(xún)解釋器的這個(gè)接口,可以設置斷點(diǎn),查詢(xún)變量以及捕捉異常,當然,查詢(xún)到這個(gè)接口,需要宿主程序同意……至于如何實(shí)現這個(gè)接口,我們會(huì )在以后的文章里面講到。
2. 默認情況下,IE是將腳本調試支持功能關(guān)閉的,因此你需要顯示地打開(kāi)它。打開(kāi)IE,點(diǎn)擊“工具”—“Internet 選項”,在“Internet 選項”里面選擇高級頁(yè)簽,在“設置”列表里面,找到“禁用腳本調試(Internet Explorer)”選項,它默認是勾選上的—將它勾掉。
3. 使用IE打開(kāi)一個(gè)新的網(wǎng)頁(yè),無(wú)論是一個(gè)遠程的,或者本地的(從本地硬盤(pán)打開(kāi))網(wǎng)頁(yè)。例如下面一個(gè)網(wǎng)頁(yè),另存為test.html:
1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2. <html xmlns="http://www.w3.org/1999/xhtml">
3. <head>
4. <title>JavaScript調試</title>
5. <script language=javascript>
6. function onload() {
7. var test = unescape("http://www.google.com");
8. alert(test);
9. }
10. </script>
11. </head>
12. <body onload="onload()">
13. </body>
14. </html>
4. 啟動(dòng)Visual Studio,點(diǎn)擊VS菜單里面的“工具”—“附加到進(jìn)程”菜單,打開(kāi)“附加到進(jìn)程”窗口里面。Visual Studio其實(shí)支持很多種調試模式,調試C++(native)程序,調試.NET(托管)程序,調試腳本程序,調試Silverlight程序以及調試SQL存儲過(guò)程。默認情況下,Visual Studio會(huì )根據附加的進(jìn)程類(lèi)型來(lái)選擇最合適的調試模式,但是有的時(shí)候,你需要手工設置一下。例如Internet Explorer這種程序,IE可以同時(shí)運行多種子程序,IE本身和ActiveX控件是C++/C寫(xiě)成的,IE可以運行Winform/WPF程序,IE可以運行Silverlight程序,當然,IE最多的還是運行JavaScript/VB Script腳本程序。Visual Studio在附加到Internet Explorer進(jìn)程的時(shí)候,總是會(huì )被IE弄糊涂,所以我們需要手工告知Visual Studio我們希望采用什么調試模式。
在“附加到進(jìn)程”窗口里面,在“附加到…”(英文是Attach To…)文本框旁邊點(diǎn)擊“選擇”按鈕,在彈出的“選擇代碼類(lèi)型”窗口里面,勾選“調試下列類(lèi)型”,并選擇“腳本”。如下圖所示:
5. 接著(zhù)你需要在“附加到進(jìn)程”窗口里面選擇要附加的進(jìn)程,在“可用進(jìn)程”(Available Processes)列表里面,有一個(gè)“類(lèi)型”(Type)列,里面列舉了對應進(jìn)程支持的調試模式,比如你可以看到在上圖里,好幾個(gè)iexplore.exe支持腳本和C++調試模式(Script, x86)。因此你所需要做的就是找到執行網(wǎng)頁(yè)的進(jìn)程,這里我選擇了ID為3732的iexplore.exe,因為那個(gè)是運行第三步網(wǎng)頁(yè)的進(jìn)程。最后點(diǎn)擊“附加”(Attach)按鈕使用腳本調試模式調試指定的IE進(jìn)程。
注:細心的網(wǎng)友可能會(huì )看到,ID為1692的iexplore.exe的標題是“JavaScript調試”—對應的就是我們執行網(wǎng)頁(yè)的瀏覽器進(jìn)程ID。其實(shí)在IE 8以前,選擇執行網(wǎng)頁(yè)的瀏覽器進(jìn)程一般都是根據瀏覽器的標題做的,但是IE 8里面有一些改變,這個(gè)變化以后的文章里會(huì )講到。
6. 附加上去以后,在網(wǎng)頁(yè)的第7行(網(wǎng)頁(yè)源碼在第三步里面)設置一個(gè)斷點(diǎn)—就跟平常調試C#和C++代碼一樣,設置好了以后,返回到IE進(jìn)程里面,刷新網(wǎng)頁(yè)。這個(gè)時(shí)候,Visual Studio應該會(huì )在網(wǎng)頁(yè)的第7行中斷IE的執行,你可以在“監視”(Watch)窗口里面查看腳本變量的值:
Tag標簽:
Debug,
調試0
0
0(請您對文章做出評價(jià))
posted @ 2009-09-08 08:44
donjuan 閱讀(748)
評論(13) 編輯收藏網(wǎng)摘發(fā)表評