48

当您处于无限循环或递归调用中时,基本上浏览器会停止响应任何内容(在 Chrome 或 FF 上)。您看不到日志,无法进入调试器,甚至无法打开控制台本身。浏览器只是简单地冻结。这太烦人了。看来我只能坐在这里挠头……任何人都可以阐明如何解决这个问题?

4

3 回答 3

78

您可以尝试的另一个技巧是打开 Chrome 中的 Web 开发人员工具,并在浏览器明显挂起时尝试​​点击暂停。然后它应该在当前执行的行处中断。通过一些步骤,您应该了解这一点。

假设您知道(或怀疑)发生无限循环的函数,您可以添加如下代码:

var calls = 0;
function iSuspectToBeLoopingInfititely() {
  calls += 1;
  if (calls > 100) { debugger; }
}

一旦方法被调用 100 次,这将停止 Chrome 中的 JavaScript 调试器。debugger;注意:如果您确实打开了“开发者工具”窗口,Chrome 只会因调用而中断。

于 2012-10-10T09:19:15.460 回答
8

找到了另一种调试方式。在我的情况下,错误被捕获,因此没有错误记录到控制台。发现复选框的错误Pause on caught exceptions。您可以在选项卡下的 den 开发工具中找到该Sources选项。要显示并启用复选框,请单击最后一个图标:

在此处输入图像描述

启用此功能后,调试器会在每个捕获的异常上暂停。

于 2018-07-26T13:36:46.600 回答
1

我在 Chrome 中遇到了问题,我会在浏览器窗口中看到“在调试器中暂停”,但看不到 Chrome 可能在哪里混淆了,因为它处于循环中......在 Firefox 中,它认识到它花费的时间太长,然后弹出窗口在 30 秒到 1 分钟后出现,说明文件和总行 # 它已冻结,这有助于进一步调试并在该区域周围设置断点。

于 2016-02-22T14:45:29.280 回答