Rovan

      一个犁牛半块田,收也凭天,荒也凭天, 清茶淡饭饱三餐,早也香甜,晚也香甜, 布衣得暖胜丝绵,长也可穿,短也可穿, 草舍茅屋有几间,行也安然,待也安然, 雨过天青驾小船,鱼在一边,酒在一边, 夜归儿女话灯前,今也有言,古也有言, 日上三竿我独眠,请是神仙,我是神仙.

首页 新随笔 联系 订阅 管理
不管我们是怎么调试JavaScript,他总是在browser里运行,下面我都说在IE里的情况。目前我使用IE6.0 sp1,要启动脚本调试,需要在IE的Tools->Internet Options的Advanced里uncheck 'Disabled Script Debugging.',否则脚本出错时我只能在browser的status bar上看到一个错误提示图标。这样一来,当browser里出现脚本错误的时候,就会弹出一个这样的warning dialog: 
    
    点击Yes后,将出现如下窗口:  
    
    这个debugger dialog里列出的‘Possible Debuggers’就是我机器里已安装的Script调试器。其中"Microsoft Script Editor"就是上次说的Visual Studio里带的调试器了,... 2003、... 2005就不用说了,就是VS.NET了。这种情况的调试是最普通的调试,可以直接把断点定位到脚本错误的行上,然后通过watch窗口看local变量的值来确定错误的所在。

    那么脚本要是不明显的出语法错误怎么设断点呢?这里有两个办法,一个是使用IE View菜单里的Script Debugger子菜单(这个菜单是在IE的Tools->Internet Options->Advanced里设置过才会出来的):  
    
    "Open"就和上面说到到的点"Yes"后出来的窗口一样,点"Break at Next Statement"比较的有意思,它将会在你的Browser执行下一条脚本的时候让你选择调试器来调试,这一点十分便于我们分析别人的拥有复杂JavaScript的页面。比如gmail里面的管理页面,如果我想看看点了star之后它是怎么处理的,就可以使用这个"Break at Next Statement",让它break在next statement上。不过使用这个feature有个技巧:有的页面由于捕获了onmousemove事件,如果你通过鼠标去点击菜单里的"Break at Next Statement"条目,你的next statement总是被onmousemove给捕获了,而得不到你想要的onclick的语句的中断,怎么办呢?! 那就是使用快捷键啦,比如你希望激活调试gmail里的mail list上的star(如下图)被点击时执行的脚本,你就把鼠标放在star上面,先按快捷键"Alt+V"、"u"、"b",再点击就行了。 
     

    到这里就可以说一下为什么现在还要用VS.NET 2003,而不只用VS.NET 2005来调试脚本了。比如上面的case,如果我在"Possible Debuggers"里选"New Instance of Visual Studio Whidbey",我们将会得到一个Msg Box: 
    
    用我test team一个哥们的话来说:真是伤感哦!

    这时我们使用VS.NET 2003就可以顺利的跟踪了。 
    
    确实郁闷吧?不过,我相信whidbey正式release的时候,这个问题因该是能解决的了,那时2003就可以完全下岗了。 
  
    当然让调试器whidbey跟踪<script src="..."></script>这种情况不是完全没有可能,这里有个小hack可以使用的。就是在调试前把会被引用到的script文件预先就打开在whidbey里,然后就能trace到该文件中去,这个办法显然只能解决本地调试,对于服务器端引用的意义不大,因为我们没法预先把服务器上的脚本文件打开:(。 

 

 

我所说的vs中的interdev并不是你所指的那个script debugger。在interdev中新建一个web项目,然后就可以像正常的调试一样调试js,直接在interdev中运行start,然后就会自动启动IE加载。你可以设置断点,单步追踪。
 

 

 我所使用的JavaScript调试环境

1. Microsoft Script Editor不单单是VS.net 2003有,实际上装完officexp/2000/2003就有了。

2. 你可能没有用过MSE里的进程附着(attach process),这导致你有好多的操作是多余的。

3. M$官方只有两个脚本调试工具。其一是msd(microsoft script debugger),随IE和IIS以及windows的高版本提供,也可以免费下载。还有一个就是MSE(microsoft script editor),后者是最好用的。

4. 关于msd,可以看这个:
http://www.microsoft.com/china/technet/community/columns/scripts/sg0904.mspx

5. 关于mse,我没有看到任何好的介绍。尽管我用它已经超过3年了。

 

我所使用的JavaScript调试环境,Microsoft Script Editor到底是怎么被装到系统里的,我还真的没有搞清楚,不过它不影响我们的调试。你可能觉得有的步骤多余,那都是我用来解决极端情况而使用的,后面还会有普通的调试说明,当然重点可能还是介绍一些怪异的调试方法。

  
asp时代,基本上都是用interdev来开发的,尤其是写脚本,真的有点爽!

.net就没用过了,看楼主的介绍,确实不错啊!
posted on 2006-07-06 13:07  Ruxuan  阅读(1011)  评论(0编辑  收藏  举报