最难的javascript调试问题

时间:2008-10-13 02:02:04

标签: asp.net javascript debugging heisenbug

我们有一个ASP.NET应用程序,当在客户端站点上运行时,它们经常会出现空引用Javascript错误。与所有这些错误一样,IE6显示的信息不太有用。但问题是,一旦我安装IE脚本调试器并尝试再调试一点,错误就变得不可重现。当没有安装脚本调试器时,再次发生错误。是否有任何其他工具可以帮助客户端站点上的JavaScript调试。 IE7或Firefox也不会产生错误。

6 个答案:

答案 0 :(得分:7)

你至少知道什么对象是null吗?你知道什么线吗?

如果没有,您可以先注释掉代码,直到问题消失为止。然后开始零碎地把它带回来直到问题再次出现

alert()是你的朋友。尝试/捕获 - 有异常警报 - 也可以是你的朋友。

在firefox中使用firebug加载它可能有所帮助 - 即使firefox没有显示错误,firebug可能会给你一些有用的数据,特别是如果你可以缩小有问题的行或对象。同样,即使没有发生错误,IE脚本调试器也可以为您提供一些有用的信息。

代码是否被混淆了?问题是否在没有混淆的情况下发生?

您可以将源复制到本地文件中并使用代码而不涉及服务器吗?它会加速实验,你将会做很多事情。

答案 1 :(得分:2)

使用jslint检查您的代码 - IE6经常因为Firefox原谅的轻微语法错误而绊倒。

答案 2 :(得分:2)

对于任何关心的人,我发现了问题。这是.NET中与ASP.NET Ajax冲突的错误。它是在.NET 2.0 sp1中修复的,结果是没有安装,但是一旦我安装它,所有问题都消失了。

答案 3 :(得分:0)

Heisenbugs非常糟糕。我同意jsight,这些错误可能是由某些竞争条件引起的;即您正在尝试访问尚不存在的页面元素。

答案 4 :(得分:0)

您是否安装了Visual Studio?

如果是这样,请在IE中打开脚本调试,就像使用脚本调试程序一样。

在您的javascript中添加一行,如...

debugger;

然后运行您的页面。您应该看到一个对话框,要求您开始调试。选择VS的新实例并遍历代码以查看错误发生的位置。

答案 5 :(得分:0)

你试过Firebug Lite吗?它通过bookmarklet为您提供了许多Firebug的功能。我不确定它会对脚本错误本身有所帮助,但它会让你浏览加载的脚本和DOM。

Companion.JS也可能有用,因为它可以为您提供比IE更好的脚本调试帮助。