调试JavaScript/VBScript脚本程序(IE篇)
这两种方式,都可以使用Visual Studio来进行调试,先看大家用得比较频繁的网页脚本程序的调试:
1. 要调试网页里面的脚本程序,调试器需要宿主程序—这里也就是IE的支持,实际上所有的脚本程序解释器都实现了一个COM的调试接口。调试器通过查询解释器的这个接口,可以设置断点,查询变量以及捕捉异常,当然,查询到这个接口,需要宿主程序同意……至于如何实现这个接口,我们会在以后的文章里面讲到。
2. 默认情况下,IE是将脚本调试支持功能关闭的,因此你需要显示地打开它。打开IE,点击“工具”—“Internet 选项”,在“Internet 选项”里面选择高级页签,在“设置”列表里面,找到“禁用脚本调试(Internet Explorer)”选项,它默认是勾选上的—将它勾掉。 
3. 使用IE打开一个新的网页,无论是一个远程的,或者本地的(从本地硬盘打开)网页。例如下面一个网页,另存为test.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>JavaScript调试</title>
<script language=javascript>
function onload() {
var test = unescape("http://www.google.com");
alert(test);
}
</script>
</head>
<body onload="onload()">
</body>
</html>
4. 启动Visual Studio,点击VS菜单里面的“工具”—“附加到进程”菜单,打开“附加到进程”窗口里面。Visual Studio其实支持很多种调试模式,调试C++(native)程序,调试.NET(托管)程序,调试脚本程序,调试Silverlight程序以及调试SQL存储过程。默认情况下,Visual Studio会根据附加的进程类型来选择最合适的调试模式,但是有的时候,你需要手工设置一下。例如Internet Explorer这种程序,IE可以同时运行多种子程序,IE本身和ActiveX控件是C++/C写成的,IE可以运行Winform/WPF程序,IE可以运行Silverlight程序,当然,IE最多的还是运行JavaScript/VB Script脚本程序。Visual Studio在附加到Internet Explorer进程的时候,总是会被IE弄糊涂,所以我们需要手工告知Visual Studio我们希望采用什么调试模式。
在“附加到进程”窗口里面,在“附加到…”(英文是Attach To…)文本框旁边点击“选择”按钮,在弹出的“选择代码类型”窗口里面,勾选“调试下列类型”,并选择“脚本”。如下图所示:

5. 接着你需要在“附加到进程”窗口里面选择要附加的进程,在“可用进程”(Available Processes)列表里面,有一个“类型”(Type)列,里面列举了对应进程支持的调试模式,比如你可以看到在上图里,好几个iexplore.exe支持脚本和C++调试模式(Script, x86)。因此你所需要做的就是找到执行网页的进程,这里我选择了ID为3732的iexplore.exe,因为那个是运行第三步网页的进程。最后点击“附加”(Attach)按钮使用脚本调试模式调试指定的IE进程。
注:细心的网友可能会看到,ID为1692的iexplore.exe的标题是“JavaScript调试”—对应的就是我们执行网页的浏览器进程ID。其实在IE 8以前,选择执行网页的浏览器进程一般都是根据浏览器的标题做的,但是IE 8里面有一些改变,这个变化以后的文章里会讲到。
6. 附加上去以后,在网页的第7行(网页源码在第三步里面)设置一个断点—就跟平常调试C#和C++代码一样,设置好了以后,返回到IE进程里面,刷新网页。这个时候,Visual Studio应该会在网页的第7行中断IE的执行,你可以在“监视”(Watch)窗口里面查看脚本变量的值:
- Javascript调试工具(下载)
- Javascript调试脚本的经验之谈
- javascript脚本调试方法小结
- 在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
- js调试工具 Javascript Debug Toolkit 2.0.0版本发布
- ie 调试javascript的工具
- Javascript 调试利器 Firebug使用详解六
- Aptana调试javascript图解教程
- 两个JavaScript jsFiddle JSBin在线调试器
- JavaScript 错误处理与调试经验总结
- javascript 在firebug调试时用console.log的方法
- 调试Javascript代码(浏览器F12及VS中debugger关键字)
- 10个基于浏览器的JavaScript调试工具分享
- 利用浏览器的Javascript控制台调试PHP程序
- 禁用JavaScript控制台调试的方法
- JS高级调试技巧:捕获和分析 JavaScript Error详解
- JavaScript调试技巧之console.log()详解
- javascript调试之DOM断点调试法使用技巧分享
- 使用Chrome调试JavaScript的断点设置和调试技巧
- 谷歌浏览器调试JavaScript小技巧
- JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
相关文章
php/asp/asp.net中判断百度移动和PC蜘蛛的实现代码
这篇文章主要介绍了php/asp/asp.net中判断百度移动和PC蜘蛛的实现代码,需要的朋友可以参考下2015-09-09
详解git reset --hard 和 git reset --soft区别
这篇文章主要介绍了详解git reset --hard 和 git reset --soft区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-08-08
使用git处理github中提交有冲突的pull request的问题
这篇文章主要介绍了使用git处理github中提交有冲突的pull request,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-11-11
老生常谈Session和Cookie之间区别与联系(必看篇)
下面小编就为大家分享一篇老生常谈Session和Cookie之间区别与联系,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2017-11-11


最新评论