当javascript进入无限循环和递归调用时如何调试javascript?

新手上路,请多包涵

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

原文由 lkahtz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 437
2 个回答

您可以尝试的另一个技巧是打开 Chrome 中的 Web 开发人员工具,并在浏览器明显挂起时尝试点击 _暂停_。然后它应该在当前执行的行处中断。随着一些人的走出去,你应该弄清楚这一点。

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

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

一旦该方法被调用 100 次,这将停止 Chrome 中的 JavaScript 调试器。注意:Chrome 只会在 debugger; 调用中断,前提是你确实打开了开发者工具窗口。

原文由 Tigraine 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

在此处输入图像描述

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

原文由 crashbus 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题