Javascript 如何在Google Chrome中调试无响应页面?

Javascript 如何在Google Chrome中调试无响应页面?,javascript,google-chrome,Javascript,Google Chrome,我有一个相当复杂的javascript应用程序(它不使用外部框架),用户目前正在测试(几千行)。我收到报告说,用户在谷歌浏览器上看到弹出窗口,上面写着: 以下页面已无响应。你可以等他们 做出反应或杀死他们 他们报告说,继续使用该应用程序的唯一方法是打开一个新的Chrome窗口,但消息每隔几分钟就会返回一次,并且只有在他们尝试进入新页面时才会出现。他们特别说,他们点击进入一个新页面,当前页面永远不会改变,他们只会看到旋转加载图标一分钟,直到弹出窗口出现 奇怪的是,我已经对这些用户遇到问题的Chro

我有一个相当复杂的javascript应用程序(它不使用外部框架),用户目前正在测试(几千行)。我收到报告说,用户在谷歌浏览器上看到弹出窗口,上面写着:

以下页面已无响应。你可以等他们 做出反应或杀死他们

他们报告说,继续使用该应用程序的唯一方法是打开一个新的Chrome窗口,但消息每隔几分钟就会返回一次,并且只有在他们尝试进入新页面时才会出现。他们特别说,他们点击进入一个新页面,当前页面永远不会改变,他们只会看到旋转加载图标一分钟,直到弹出窗口出现


奇怪的是,我已经对这些用户遇到问题的Chrome(18)的确切版本进行了广泛的测试,我没有发现任何问题。我有点不知所措,现在不知道该去哪里找,因为我一直无法复制它,有没有关于下一步应该去哪里的想法,至少试着找出可能导致错误的原因?

在无响应期间,使用chrome javascript调试器暂停(中断正在运行的代码)。它需要一些时间,但是它应该在任何运行时间太长的中间中断。然后,您可以使用调试器控件单步执行,查看不必要的循环情况。

我知道这是一个老问题,但我也遇到了这个问题,我最好的建议是:

完全关闭Chrome,然后在Chrome快捷方式中添加“-enable logging”以使用该标志启动它,您甚至可以添加“-enable logging--v=1”以启用详细日志记录

我知道,插入断点不是一个选项,因为它位于一个新选项卡中,在我启动控制台之前就崩溃了。但是,通过启用日志记录,控制台将写入chrome数据目录中的文件(“C:\Users\username\AppData\Local\Google\chrome\User data”)


我希望有一天这能像我一样帮助别人D

我今天有一个页面有一些错误的JS(无限循环),我无法通过键盘快捷键或右键单击打开开发工具(Chrome 60.0.3112.113)。能够通过以下方式克服此问题:

  • 打开新选项卡
  • 打开开发工具(在空选项卡上)
  • 输入URL并加载
  • 暂停开发工具中的JS执行

  • 也许这会有帮助!此外,chrome debugger会在浏览器选项卡之间保留断点(对于相同的JS),因此,如果我无法准确确定导致错误的原因,我的断点将仍然存在于新选项卡中

    尝试运行SpeedTracer for Chrome以获取任何长时间运行的进程的配置文件,然后调查这些进程是否存在内存泄漏、计算量过大等问题。可以尝试的一件事是拍摄堆快照,以查看是否有某个对象正在消耗越来越多的内存。另外,尝试找出代码中需要更多计算时间的部分,并对它们进行注释或使用setTimeout,在你发现问题的确切位置之前,有什么想法可以解释为什么这两个问题都不会以同样的方式影响到每个人?Chromes Profiles/Profiler允许你让现有代码运行基准测试,看看什么逻辑消耗了最多的资源。这很可能是罪魁祸首。+但问题是我无法重现这一点,我不知道为什么会这样。自从我发布这个问题以来,我又收到了几份关于同一问题的报告,这只发生在Chrome用户身上。你使用的是onbeforeunload吗?不,我在任何地方都不使用它。@ColinGodsey onbeforeunload有什么问题吗?我使用的是@ColinGodsey的建议,当调试器打开时,没有响应的消息永远不会出现。