提问人:Mark Erasmus 提问时间:5/9/2015 最后编辑:CommunityMark Erasmus 更新时间:11/18/2023 访问量:14542
Chrome 开发者工具在未设置断点的地方不断中断
Chrome Developer Tools keeps breaking where no breakpoints are set
问:
使用 Chrome 开发者工具调试 JavaScript 代码时,调试器会在未设置断点的代码上暂停。我没有启用该功能,并且肯定没有设置断点(见附图)。Pause on exceptions
我之前问过一个类似的问题,这很有帮助,但并没有完全解决这个问题(以前我启用了)。在下面的示例中,我将缩小版本换成了未缩小版本,这使我可以看到脚本执行暂停的位置,但我不知道为什么暂停。这种情况也经常发生。Pause on exceptions
kendo.all.min.js
jquery.min.js
答:
我通过单击“设置”部分中的“恢复默认值并重新加载”按钮解决了断点问题。要查找该按钮:在“开发者工具”中,单击右上角三个垂直点旁边的齿形轮。(注意:如果使用旧版本的Google Chrome,请单击右上角的三个垂直点,然后选择“设置F1”)。“恢复默认值并重新加载”按钮位于右下角。
另请注意,它确实恢复了默认值 - 您将丢失所有以前保存的断点,并且在开发人员工具中打开的任何文件都将被关闭。
我从以下位置得到了这个解决方案:Chrome javascript 调试器断点不执行任何操作?
评论
F8 有两个功能。1. 跳过下一个断点,2.在浏览器执行代码的任何地方停止。即使未设置断点,此操作也有效。例如,当您忘记停用断点时,向 F8 发送垃圾邮件可能会导致浏览器在任意位置停止。
当您转到调试器快捷方式时,您可以看到 F8 具有暂停/继续功能。但遗憾的是,您似乎无法将它们拆分到两个不同的键绑定上。
自从我知道这个功能以来,我再也没有遇到过这个“错误”。
只需禁用缓存并重新加载页面,断点就会再次显示
评论
在计算机之间导入/导出 Chrome devtools 断点和设置的接受答案提醒我检查“devtools-on-devtools”,并在 DevTools 的内部应用程序本地存储中删除密钥的 JSON 列表值的错误元素,以解决我的相同问题,而无需重置所有内容。breakpoints
后来它又发生了,所以我写了这个控制台片段:
((stores, matchKey, removeMatchingRegExp, dryRun)=>{for(let store of stores){
let r = JSON.parse(localStorage[store]), l = r.length;
r = r.filter(b=>!b[matchKey].match(removeMatchingRegExp));
if(!dryRun) localStorage[store] = JSON.stringify(r);
console.log(`${dryRun ? 'Would' : 'Did'} remove ${l - r.length} entries from ${store}:`, r)}; return 'OK'})
(['breakpoints', 'domBreakpoints'], 'url',
new RegExp('^https?://example.com/script.js$'), true)
注意:
- 无保修:使用风险自负。备份您的数据。
- 编辑它 - 至少是参数 - 以满足您的需求。
RegExp
- 最后一个布尔值应该是禁用 。
false
dryRun
- 必须重新打开外部 DevTools 才能生效。
我能够通过更新 Chrome 来解决这个问题。我认为版本并不重要,只是更新过程会重置缓存中存储的所有断点。
我发布这个答案是为了防止它能帮助像我一样错过有关幻像断点行为原因的重要线索的人。就我而言,这是“用户错误”——我的。根本原因是 JavaScript 文件中被遗忘的“调试器”语句,该文件本身是从 TypeScript 生成的。我已经删除了调试器;语句,在本地运行和测试,从 localhost 运行和测试,没有问题。但是我已经将带有该语句的版本推送到远程,它构建并发布到我们的开发站点,并存在该语句。开发网站版本不包括 TypeScript 源文件。命中调试器语句时,Chrome 尝试加载 .ts 源并显示“无法加载内容...”我只是假设它处于断点(我在测试期间设置了很多)。当我看到“无断点”时,我以为 Chrome 遇到了此线程中解决的问题。如果我费心查看调用堆栈跟踪,我会在 .ts 文件中看到源代码行,并很快弄清楚它。下面是一个屏幕截图:
即使没有设置明显的断点,我也遇到了同样的问题。似乎唯一阻止它的是切换选项(Ctrl + F8)。Deactivate breakpoints
这样可以防止 Chrome 在虚拟断点处停止,有时还会导致它在源代码中显示(禁用),从而允许将其删除。
更新 - 2023 年 11 月 17 日
刚刚在开发人员工具设置中找到了一个更有可能的解决方案;在“实验”下,有一个“启动时急切地设置所有断点”选项
清除此复选框会使“隐藏”断点可见,因此可以将其删除。
评论
CTRL + F5
CTRL + F5