在文章调试JavaScript/VB Script脚本程序(Wscript篇)里面,有网友问我如何调试ASP里面的脚本程序,我不知道他问得是调试ASP网页里面的VBScript ASP代码,还是ASP.NET网页里面的JavaScript/VBScript客户端代码,所以我就在这篇文章里面先将调试ASP网页里面的ASP代码这种情况都解释一下吧。
估计ASP这个玩艺用的人已经很少了,但是还是有很多老网站是用ASP技术制作的,维护的时候,还是需要调试修改一下ASP网页代码的。虽然ASP网页的代码大部分都是VBScript或者JavaScript编写的,而很多在浏览器上运行的DHTML代码也是用JavaScript/VBScript写成,这很容易误导程序员,认为两者都是在浏览器上运行的,其实不然。
ASP网页代码是在服务器端运行的,具体来说是由IIS里面执行,为什么IIS可以同时执行ASP网页和ASP.NET网页代码,如果我告诉你IIS还可以执行JSP代码,你信不信?当然啦,IIS如何可以执行ASP,ASP.NET和JSP等代码又可以开一系列的文章来讲解啦。
而DHTML代码是在浏览器端(IE或者Firefox)执行的,两种代码不同的执行方式也决定了不同的调试策略。
综上所述,两种是不同是事物,但是两者是相辅相成,不可分割的……
为了调试ASP网页代码,你需要调试IIS工作进程(不是IISAdmin那个进程),在IIS 6.0中,IIS工作进程名叫做w3wp.exe(World Wide Web Process),在IIS 6.0之前好像是dllhost.exe。因为IIS 5.0用的人已经不多了—主要是我已经不用了,所以本文是以IIS 6.0作为平台讲解的。
因为打开调试支持会影响到网站的性能—即响应速度,所以默认情况下,IIS将ASP的调试功能关闭了:
1. 打开IIS管理界面(IIS Manager或者iisadmin.exe)。
2. 右键单击你要调试的网站,例如“默认网站(Default Web Site)”。
3. 点击“家目录(Home Directory)”,点击“配置(Configuration)”。
4. 选择“调试(Debugging)”页签。
5. 将“调试标志(Debugging Flags)”的两个勾都选上,如下图所示:
6. 启动Visual Studio,点击“工具(Tools)”—“附加到进程…(Attach to process …)”。
7. 在“选择进程(Available Process)”对话框里面,选择w3wp.exe(注意,选择“类型(Type)”列为“脚本,x86(Scripting, x86)那一个”)。
如果你在对话框里面没有看到w3wp.exe,请先访问一下网站—因为网站可能重启了,然后点击“附加到进程…(Attach to process …)” 对话框上面的“刷新”按钮。
如果还是没有看到w3wp.exe,勾选“显示所有用户的进程(Show processes for all users)”和“显示所有会话的进程(Show processes in all sessions)”两个复选框,再点刷新试试。
如果还是没有看到,那么……
a) 要么回到第一步重新做一次。
b) 要么问候一下Visual Studio祖宗,回去睡觉,彻底忘掉这篇文章。
现在的效果应该和下图类似:
8. 很遗憾,现在的Visual Studio 只支持设置函数断点了,至少我在2008里面是不能直接在代码行上设置断点了。
9. 点击Visual Studio的“调试(Debug)”—“窗口(Windows)”—“断点(Breakpoints)”菜单。
10. 然后点击“函数断点(Break at Function …)”,如下图所示:
11. 在接下来的窗口中输入—TestFunction,如下图所示:
12. 回到IE里面,刷新一下页面,这个时候,你应该可以做ASP调试了,如下图所示: