上次的文章引起很多网友的讨论,我很高兴
。其中提到了不少我原来并不十分清楚的东西,在此首先对他们表示感谢,接下来继续我的脚本调试环境。
我们简单的使用VS.NET打开一个包含脚本的html文件,我们发现我们是不能调试它的,虽然我们可以按F9来设置一个端点,但是这个断点却是形同虚设:(。这是因为我们的browser还没有进入可调试状态,使用上一篇文章中的在代码出错时选择Debugger的方法可以让browser进入调试状态,更普通的办法是把Browser的线程附加到调试器上去。下图就是调试Test.html的示例:
附加线程到运行Test.html的Browser进程上,就是Processes List里的"IEXPLORE.EXE"。
这样一来再在脚本代码上按F9设置断点,断点的状态就会从下图的第一个unavailable状态变为下图的第二个available状态。
这样一来我们的代码执行到断点处就会停止下来,这个好像废话哈 。下面就是VS.NET 2005比VS.NET 2003强的地方登场了。我们如果用过VS.NET编译型程序的调试,都知道把鼠标放在变量名上,会很快有个Tooltip显示变量的值,或对象的类型和默认ToString()的值。这个功能在2003和2005里同样拥有,只是对于对象Object,在2003里就显示一个{...},如果要看{...}是啥?需要使用Add Watch或QuickWatch来看;在whidbey里面,这个察看功能有了很大的提升,我们将会看到一个可展开的节点来显示对象的值,我们可以在弹出窗口里浏览整个对象树,如下图:
这个东西看起来是不是对调试非常方便呢?当然要是我们觉得弹出窗口太大遮挡了代码,而且这时我们又浏览了很多几级对象树了,屏幕上有一大堆展开的弹出窗口,我们不希望它们消失后,看清了代码又再把它们重新弄出来,怎么办呢?我们这时可以按Ctrl键或者鼠标中键(就是滚轮)让这些弹出窗口透明化~~~
很酷很贴心的功能吧 ?
调试脚本中可能遇到的问题和对策(我们都默认IE的允许脚本调试的选项是开启的):
1、本来我们打开IE的脚本调试后,程序出现脚本错误时就会弹出一个 MsgBox来提示是否调试,而不只是在IE左下角显示一个warning icon。但是有的时候经过长时间的调试,IE在脚本错误的时候,会不再弹出那个调试提示框,而是又变为在左下角显示错误图标。解决这个问题很简单,关掉browser重新打开来调试就好了。
2、在脚本正常运行时,我们使用IE的View->Script Debugger的Open和Break at Next Statement选项会强行调出 脚本调试器选择窗口。但是如果我们在脚本中开启过 popup窗口,这两个调试选项会失效,就是点选后没有任何反应,这个可能是IE的bug,解决办法一:重新起动IE来调试;解决办法二:在希望调试的脚本语句前写一个错误的脚本调用,比如a.a;,这样程序运行在a.a语句时就会被break并弹出错误调试提示MsgBox,我们可以在这时选择调试器,进入调试状态后使用鼠标改变脚本执行顺序,跳过错误的语句就行了。
我们简单的使用VS.NET打开一个包含脚本的html文件,我们发现我们是不能调试它的,虽然我们可以按F9来设置一个端点,但是这个断点却是形同虚设:(。这是因为我们的browser还没有进入可调试状态,使用上一篇文章中的在代码出错时选择Debugger的方法可以让browser进入调试状态,更普通的办法是把Browser的线程附加到调试器上去。下图就是调试Test.html的示例:
附加线程到运行Test.html的Browser进程上,就是Processes List里的"IEXPLORE.EXE"。
这样一来再在脚本代码上按F9设置断点,断点的状态就会从下图的第一个unavailable状态变为下图的第二个available状态。
这样一来我们的代码执行到断点处就会停止下来,这个好像废话哈 。下面就是VS.NET 2005比VS.NET 2003强的地方登场了。我们如果用过VS.NET编译型程序的调试,都知道把鼠标放在变量名上,会很快有个Tooltip显示变量的值,或对象的类型和默认ToString()的值。这个功能在2003和2005里同样拥有,只是对于对象Object,在2003里就显示一个{...},如果要看{...}是啥?需要使用Add Watch或QuickWatch来看;在whidbey里面,这个察看功能有了很大的提升,我们将会看到一个可展开的节点来显示对象的值,我们可以在弹出窗口里浏览整个对象树,如下图:
这个东西看起来是不是对调试非常方便呢?当然要是我们觉得弹出窗口太大遮挡了代码,而且这时我们又浏览了很多几级对象树了,屏幕上有一大堆展开的弹出窗口,我们不希望它们消失后,看清了代码又再把它们重新弄出来,怎么办呢?我们这时可以按Ctrl键或者鼠标中键(就是滚轮)让这些弹出窗口透明化~~~
很酷很贴心的功能吧 ?
调试脚本中可能遇到的问题和对策(我们都默认IE的允许脚本调试的选项是开启的):
1、本来我们打开IE的脚本调试后,程序出现脚本错误时就会弹出一个 MsgBox来提示是否调试,而不只是在IE左下角显示一个warning icon。但是有的时候经过长时间的调试,IE在脚本错误的时候,会不再弹出那个调试提示框,而是又变为在左下角显示错误图标。解决这个问题很简单,关掉browser重新打开来调试就好了。
2、在脚本正常运行时,我们使用IE的View->Script Debugger的Open和Break at Next Statement选项会强行调出 脚本调试器选择窗口。但是如果我们在脚本中开启过 popup窗口,这两个调试选项会失效,就是点选后没有任何反应,这个可能是IE的bug,解决办法一:重新起动IE来调试;解决办法二:在希望调试的脚本语句前写一个错误的脚本调用,比如a.a;,这样程序运行在a.a语句时就会被break并弹出错误调试提示MsgBox,我们可以在这时选择调试器,进入调试状态后使用鼠标改变脚本执行顺序,跳过错误的语句就行了。
关于脚本调试环境先写到这里,以后有更好的调试方法我会更新进来,欢迎大家提出更好的脚本调试意见和建议。
本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。