谷歌浏览器不允许我放置断点
Posted
技术标签:
【中文标题】谷歌浏览器不允许我放置断点【英文标题】:Google Chrome won't let me place breakpoints 【发布时间】:2011-04-28 04:44:21 【问题描述】:我一直在使用 Google Chrome 来调试我的 javascript,但是突然之间我不能再放置断点了。我点击行号,我之前点击添加断点的地方,但是不会添加断点。有时如果我点击得很快,就像疯子一样,我可以看到它试图添加断点,但它不会粘住。
我唯一改变的是添加 JSONView。我卸载了它,但仍然无法添加断点。
有人知道吗?
编辑: 我可以在其他页面上放置断点,比如 ***,而不是我正在开发的在 localhost 上运行的页面。
【问题讨论】:
我的同事和我也遇到过类似的问题,但它只出现在 localhost 上的某些 JavaScript 文件中,而不会出现在其他文件中。 我遇到了同样的问题。它只发生在某些脚本上而不是其他脚本上——找不到它们的任何模式。 我在处理本地文件时遇到了问题。您可以尝试将其托管在网络服务器上吗?我在本地服务器(连接到本地局域网)上完成所有工作,没有与外界开放的端口,我没有遇到任何问题。您可以在本地安装 Apache。 我知道这并不能解决问题,但您可以使用调试器 js 语句代替 我们发现了以下奇怪的问题:1) Chrome 拒绝在 FileA.js 中设置运行时断点。 2) 我们通过将debugger;
语句放在该文件中来解决这个问题。 3) 在某些其他情况下,Chrome 在单步执行代码时会在 Web SQL API (w3.org/TR/webdatabase/#asynchronous-database-api) 的事务回调中开始忽略任何代码。显然,当 Chrome 不希望您在特定代码文件中设置断点时,它确实是这样的。
【参考方案1】:
不,它不是固定的。从我记事起,Chrome 调试器就已经这样做了。只需关闭并重新打开调试器,它通常会再次出现。有时您可能需要尝试多次才能使其正常工作。
【讨论】:
现在是 2014 年,在 Chrome 36 中这个错误仍然会不时弹出。 2015 和 Chrome 42,刚刚拥有它! 太棒了,2015 年 5 月 29 日仍然发生! (最新的 Chrome) Chrome 46,我现在有问题。 Chrome 48 仍在发生。我很感激它发生是有原因的,如果只有 Chrome 会真正告诉你它是什么(这段代码永远不会执行,这段代码不会编译等),所以你知道该怎么做【参考方案2】:昨天(2 月 3 日)修复了这个错误,引入了一个用于管理 JavaScript 断点的新 api:http://code.google.com/p/chromium/issues/detail?id=69988
我从 http://build.chromium.org/f/chromium/snapshots/ 下载了最新的 Chromium nightly,并且能够在 JavaScript 中成功设置断点,而使用 Chrome 的当前稳定/beta/dev 版本无法做到这一点。
希望此修复程序将合并到 Chrome 的下一个版本中。在此之前,将debugger;
语句添加到您的代码中是设置断点的一种不错的解决方法。
【讨论】:
Chrome Canary 版本是获取固定版本的一种快速简便的方法。它与您当前的 Chrome 安装一起运行,并且非常频繁地自动更新(仅限 Windows)。 tools.google.com/dlpage/chromesxs【参考方案3】:尝试在无法访问的代码上设置断点时也会发生这种情况。如果在新的 chrome 进程中启动调试器继续导致问题,请确保在断点之前没有错误的中断或返回等。
例如:
var foo = 'bar';
return foo;
foo = 'baz';
debugger
^^^ 上例中返回后的语句将无法到达,chrome 将正确地拒绝执行调试器命令或设置断点
【讨论】:
谢谢,这为我节省了一些时间来挠头。不是最好的 UI 来刷新断点,然后立即将其删除而无需任何解释。【参考方案4】:检查你的 JS 代码!在 Chrome(和 Firefox)上也出现错误,错误是一个与另一个名称完全相同的方法。
【讨论】:
以上是关于谷歌浏览器不允许我放置断点的主要内容,如果未能解决你的问题,请参考以下文章