当您处于无限循环或递归调用时,浏览器基本上会停止响应任何内容(在Chrome或FF上)。你看不到日志,无法进入调试器,即使你无法打开控制台本身。浏览器只是冻结。这太烦人了。看来我什么也做不了,只是坐在这里挠挠脑袋......任何人都可以解释如何解决这个问题?
答案 0 :(得分:54)
您可以尝试的另一个技巧是让Chrome中的Web开发人员工具打开,并在浏览器显然挂起时尝试点击暂停。然后它应该在它当前正在执行的行处中断。有些人会走出去,你应该深究这一点。
假设您知道(或怀疑)infite循环发生的函数,您可以添加如下代码:
var calls = 0;
function iSuspectToBeLoopingInfititely() {
calls += 1;
if (calls > 100) { debugger; }
}
一旦方法被调用100次,这将停止Chrome中的JavaScript调试器。
注意:如果您确实打开了“开发者工具”窗口,则Chrome只会中断debugger;
次来电。
答案 1 :(得分:5)
找到了另一种调试方式。在我的情况下,错误被捕获,因此没有错误记录到控制台。通过复选框Pause on caught exceptions
找到了该错误。您可以在Sources
标签下的den dev工具中找到该选项。要显示并启用该复选框,请单击最后一个图标:
启用此功能后,调试器将在每个捕获的异常上暂停。
答案 2 :(得分:2)
我今天遇到了同样的问题。寻找解决方案使我想到了这个问题。
同时,我在其发行说明(2018年4月,https://developers.google.com/web/updates/2018/04/devtools#stop)中找到了适用于Chrome的解决方案。
致谢
答案 3 :(得分:1)
我在Chrome中遇到了问题,我会在浏览器窗口中看到'在调试器中暂停'但是无法看到Chrome可能在哪里被混淆,因为它处于循环中...在Firefox中,它认识到它耗时太长,然后在30秒到1分钟后出现一个弹出窗口说文件和一般线#冻结有助于进一步调试并在该区域周围设置断点。
答案 4 :(得分:-3)
您可以使用以下代码停止无限循环。
debugger;