为啥我的断点会从预期的位置逃跑

Posted

技术标签:

【中文标题】为啥我的断点会从预期的位置逃跑【英文标题】:Why do my breakpoints flee from their intended position为什么我的断点会从预期的位置逃跑 【发布时间】:2015-04-02 14:38:59 【问题描述】:

当尝试在 javascript 中的任何位置设置断点时,我遇到了在 Firefox 开发者版中移动到文件末尾的行为。

有时在重新启动 PC 后或第二天它就可以工作了,但我不确定是否某些代码会导致此问题,或者这是否是 Firefox 开发者版中的错误。

【问题讨论】:

【参考方案1】:

不要换行

我的解决方案是删除变量中多余的行,以便所有内容都在一行上

语法错误:

 var inner_html =
'<a>
    <div class="list_autocomplete">
        <div class="image_autocomplete">
        <img src="'+ img_url + '">
        </div>
        <div class="label_autocomplete">' + item.label + '</div>
        <div class="description_autocomplete">' + item.description + '</div>
    </div>
</a>';

正确的语法:

var inner_html = '<a><div class="list_item_container"><div class="image"><img src="img/' + item.image + '"></div><div class="label">' + item.label + '</div><div class="description">' + item.description + '</div></div></a>';

【讨论】:

【参考方案2】:

我刚刚遇到了这个问题,问题只是我在有问题的代码中有语法错误。

只要我删除了有问题的“====”,我就可以在该段代码中设置断点。

【讨论】:

【参考方案3】:

然后安装firebug,它会要求你升级到alpha版本接受升级,现在你可以把断点放在你想要的行。

问候。

【讨论】:

Firebug 和 Firefox 开发者版会相互影响吗? IE。 Firebug 会取代内置的开发工具吗?这还有其他含义吗? 刚刚安装了 Firebug。它似乎取代/隐藏了集成的开发人员工具。但是,我在断点方面遇到了相同的行为,因此我将再次删除 Firebug。【参考方案4】:

当您在不包含可执行代码的行上设置断点时,调试器会尝试提供帮助并将断点滑动到它可以找到的下一个最近的带有可执行代码的行。这并不像看起来那么容易,因为它可以在已经被垃圾回收的脚本上设置断点,所以调试器不能总是判断一行是否包含可执行代码,或者相应的脚本是否刚刚被垃圾回收.

当涉及到源映射时问题会更加复杂,因为调试器需要找出原始源中的哪些行与生成的源中设置断点的行相对应。我们目前这样做的方式并不总是准确的,这可能会导致像您看到的那样的问题。

也就是说,还有其他一些事情可以解释为什么您的断点没有按应有的方式工作。例如,我们还需要将断点位置映射到字节码偏移量,这也不总是准确的。

我们目前正在积极重构调试器中的断点代码,以尝试解决这些问题,因此如果您遇到回归问题,我不会感到惊讶。最好的办法是在 bugzilla 中针对该问题提交一个错误,最好包含重现步骤。

希望有帮助!

【讨论】:

以上是关于为啥我的断点会从预期的位置逃跑的主要内容,如果未能解决你的问题,请参考以下文章

对话框捕获鼠标移动消息,实现“逃跑按钮”

Pycharm CE 没有在我的 Django 项目中遇到断点

eplan,如何让中断点关联只显示高层代号,不显示位置代号?

断点续传基本原理初了解

调试信息(断点等)存储在 VS2013、本机 C++ dll 项目中的位置在哪里?

Google 位置设置未按预期工作