所谓的动态调试(跟踪)是指,让程序一步一步的执行,我们可以随时随地的关注程序的运行状态。中断的意思就是让程序先别急着往下执行,等我查看完了,给你指令再接着运行。断点么,就是中断的点呗,就是程序运行到此时,先中断下了,停下了让我看看:)
1.要想用vs来调试,先要让启用服务器端调试,就是在iis中设置一下就行,iis7中设置如下图示(iis7中不仅网站那要设置,在IE那也要设置才能生效):
2.在IE的 Internet选项-->设置-->禁用高级调试(取消打钩)-->显示友好Http错误信息(取消打钩)
3.在要调试的地方,插入stop语句:
4.在ie中访问页面,此时会弹出对话框,选择vs2005或者vs2010作为调试器都行,并点击“是”(VS2010退出的时候貌似存在点问题)
之后,会有附加安全警告,不用理会,选择附加到此进程即可,即点击“附加”。就会出来调试界面:
大家注意4个地方:
最上面的调试工具栏,那有进行跟踪调试的命令按钮。
最左边的黄色箭头和这一灰色列,黄色箭头告诉我们现在程序运行到那一步了。
右边解决方案资源管理器是iis服务器加载的asp文件。
最下面的一些提示栏还是很有帮助的,比如调用堆栈,局部变量,监视等。
现在结合调试实例,一一为大家进行解释。
点击绿色三角则让程序继续执行,如果后面有断点(后面介绍如何设置断点)或者stop则又会中断,否则asp中服务器脚步执行完毕,就能在页面中看见结果。第三个蓝色方块按钮,是指结束调试,即使有断点也不会中断了。黄色箭头是用来显示当前中断的位置,可能我们查看其他页面的代码,忘记当前程序运行到哪了,点击黄色箭头就能立刻转到程序运行点(黄色箭头所指位置表示该语句还未执行)。
比如,服务器准备执行Easp.Use “tpl”这条语句了,如果我按f10,那么黄色箭头将移动到下一条语句:Easp.Tpl.Load "test.html" 。如果按f11则会跟踪到Easp.Use这个函数中,如下图:
对于Use我们没什么疑问,不想在Use函数里面一步一步跟踪了,就可以按shift+f11(点击工具栏按钮也行J)就会跳出Use函数,程序就会在Easp.Tpl.Load "test.html"语句处中断。
此时表示在 Easp.W Easp.Tpl.GetHtml 设置了断点,当程序运行到此处就会停止下来。
刚才大致给大家介绍了如何用stop语句来激活vs进行调试,然后,在调试的过程中如何设置断点,并进行一步一步的跟踪,如果跟踪到函数中,又如何快速的从函数中跳出来。不过,我们调试的目的是从中找出bug来,关键点就是要查看变量的值,那么我们来看看用在静态调试中,要写一堆的东东来查看,但在动态调试中不费吹灰之力就能获得。
当前的所有变量都能看见,而且变量的值,变量的类型也都清清楚楚。对应对象变量点击加号还能展开查看很多的信息。
呵呵,不用写任何语句就能看见:访问该页面时,有一个get参数,“id=123”,查看session啊,application啊都很方便,自己定义的变量更是不用说,当然,如果程序没运行到变量赋值处,就什么也没有哦。即使是记录集查看起来也很方便。
呵呵,其实不用急,点击“监视”,在名称列中,输入想要知道的变量名,然后回车,即可!而且在这里面动态的输入计算都没问题!
这样调试是不是比trace更方便一些?不用为了测试变量值去写一堆代码,而且在看程序逻辑上看来n遍都觉得无错误时,就是不知道变量是在哪出错时,用动态跟踪就很简单了。还有更多的功能,就不介绍了,大家研究了记得贡献成果哦!
嘻嘻,其实完全可以用VS来写asp网站,这样编写和调试完全集成在一起,调试时stop都不用写了:),而且vs还能集成vss,svn这样的源代码管理工具,团队开发也很方便。总之是用vs来写是好处多多啊(哎,被微软的IDE毒害太深了!),只是没有DW那种关于Easp的智能提示(但有vbscript的提示),但是写熟后Easp的那几个函数还记不住?