Firebug - 断点未命中

Posted

技术标签:

【中文标题】Firebug - 断点未命中【英文标题】:Firebug - Breakpoint doesn't hit 【发布时间】:2010-10-13 16:16:08 【问题描述】:

我在外部 JS 文件中设置断点,但我无法让 Firebug 以一致的方式命中断点。它有时有效,但大多数时候无效。我可以让它工作的唯一方法是打开“中断所有错误”

我用过调试器;声明也没有任何运气。

【问题讨论】:

它在 Firefox 的内置调试器中可以工作吗? 【参考方案1】:

我也有这个问题。也许与 KIT-Inwi 的回答有关……但我在每次页面加载时使用 php 生成随机行。

Firebug好像记得整个html页面的行号要放断点,不一定是javascript的行,也就是说你在这个页面上放断点的行号下次加载时加载不一定是同一行代码,所以断点会出现“跳转”。

我不确定您如何使用每次都更改的动态内容来解决它,但我通过删除随机行来修复它,因此带有断点的行在每次页面加载时都是相同的。

【讨论】:

【参考方案2】:

FF 36 和 FB 2.0.8 存在同样的问题:控制台中没有错误,代码工作正常,但 FB 显示 HTML 而不是 JS,在 debugger 断点处停止,但在某个随机 HTML 行显示它,不在常规断点处停止。

我通过从页面中提取 JS 并将其移动到它的 自己的JS文件。

但是有一个问题:当脚本驻留在它自己的 JS 文件中时,我无法让“全局”变量在 FF 中工作(无论代码在哪里都可以在 IE 中正常工作),即使使用 window.varName句法。所以最终在 FB 中从一个单独的文件中调试,但恢复为内联进行生产。

【讨论】:

【参考方案3】:

对我来说,在我删除每个 document.write() 调用后它就起作用了。

【讨论】:

【参考方案4】:

我也间歇性地遇到这个问题。我从断点下拉菜单中选择了“禁用所有断点”和“启用所有断点”,它开始工作。

【讨论】:

拯救了我的一天。谢谢。【参考方案5】:

我在这上面花了 1 个小时。

我有一个像这样的<script> 标签:

<!-- jQuery Validate -->
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js" type="text/javascript">

你能发现问题吗?

好吧,我花了这么长时间才发现它。缺少/ 来关闭&lt;script&gt; 标记。

<!-- jQuery Validate -->
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js" type="text/javascript" />

这肯定是由于一些复制/粘贴然后尝试更改代码...在这种情况下我只是装傻! :)

添加/ 后,我能够让断点在 Firebug 中工作。有道理。

我终于可以看到那些祝福的绿色数字了。

【讨论】:

【参考方案6】:

只是为提到的那些增加另一种可能性。

这自然发生在我面临着在生产中修复某些东西的压力时。

我无意中引入了一个语法错误:

function: myFunc()

// function body


就这样。在控制台日志的开头有一个错误,但我没有注意到它。我一直在尝试调试该文件,但 Firebug 不会介入。

所以,如果您遇到这种情况:请检查控制台,可能是语法错误导致文件加载短路。

【讨论】:

【参考方案7】:

Firebug 上的“控制台”选项卡是否显示任何其他 JavaScript 的错误?我发现如果在调试断点之前的代码存在 JavaScript 错误,那么在修复之前的断点之前,它永远不会到达那行代码。

【讨论】:

【参考方案8】:

我在尝试使用 Firebug 1.4 调试框架内的页面时遇到了这个问题。从“此框架”上下文菜单中选择“仅显示此框架”或“在新选项卡中打开框架”然后刷新页面似乎可以使脚本可调试。

【讨论】:

【参考方案9】:

我也经常遇到这个问题。我发现重新打开选项卡似乎有帮助(断点不会丢失)。但是“Break on all errors”看起来是最可靠的破解方式。

我很少需要一些关于 IE 的好东西,但在这种情况下它是正确的。在 VS 中调试 JavaScript 就可以了。它会毫无问题地命中断点(“调试器”),并阻止页面上的所有其他 JavaScript 代码执行。所以我经常用它作为备份。

【讨论】:

【参考方案10】:

如果行号不是绿色,Firebug 似乎无法调试该部分代码,因为它超出了范围。所以,如果你使用类似 $(function () ... ); Firebug 将无法访问函数和变量。

这有意义吗?

此外,是否有其他功能或某些东西覆盖了您尝试调试的功能。如果您将同一个 JS 文件包含两次,甚至是可能的。

希望对您有所帮助。

【讨论】:

Firebug 似乎也经常没有意识到代码是有效的。这似乎最常发生在 do while 循环中:Firebug 拒绝将行号变绿,即使它应该。【参考方案11】:

Firebug 是否在脚本选项卡中显示带有绿色行号的代码?这表示可调试的代码行。

我遇到过这种症状,有时行号都不是绿色的。我刷新页面,神奇的是,它们又变绿了。

【讨论】:

不,刷新页面没有帮助。它们也没有绿色的行号。

以上是关于Firebug - 断点未命中的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Firebug 不为未定义的属性显示“未捕获的类型错误”?

为啥 firebug 在调试时会改变网站的行为?

Firebug 未列出所有 javascript 模块

ReferenceError:用户未定义 rails + 主干 + firebug

如何判断 XMLHTTPRequest 是不是命中浏览器缓存

我经常在vs2010里调试C#网站程序,但 总报”当前不会命中断点,还没有为该文档加载任何符号。“不知道为什