如何确定导致 Chrome 显示“Aw, Snap”对话框的原因

QFD*_*Dev 39 google-chrome google-chrome-extensions memory-error

有谁知道是否有一种实用的方法可以确定“Aw Snap!”的原因。偶尔出现在 Google Chrome 上的消息?Chrome 有我可以参考的错误日志吗?我怀疑这个问题是由代码中的递归循环引起的,然后它会吞噬所有内存?有什么办法可以确认这一点吗?

小智 34

官方 Chrome 开发人员 Twitter 帐户链接到可帮助您调试“Aw snap”页面的网站:http : //www.chromium.org/for-testers/enable-logging

建议使用以下标志启动 Chrome:

--enable-logging --v=1

如果您这样做,那么您可以从chrome_debug.logChrome 的用户数据目录(在 的父目录中Default/)或二进制构建文件夹 ( out\Debug) 中的文件中获取崩溃日志(如果您使用的是调试版本)。

  • upvote 因为这篇文章在对已接受答案的编辑添加它之前很久就提到了`--enable-logging --v=1`。 (7认同)

vin*_*ief 31

有,请参阅此处的说明:对于 Chrome 中的普通登录,您可以尝试:

  • 我启用了日志,在 chrome 崩溃时,它在崩溃时没有记录任何错误。是否有任何参考资料可以深入了解日志项目? (3认同)
  • 在这种情况下,Javascript 控制台通常没有用,因为当页面崩溃时开发工具会断开连接。 (3认同)
  • 我认为第一个选项将有助于隔离这个问题。开发控制台在输出任何有用的内容之前挂起。 (2认同)
  • 您能否在此答案中包含链接的缩写内容。如果链接失效,它将变得陈旧。 (2认同)

ken*_*orb 5

,啪!页面通常与进程分段错误崩溃有关,这可能与软件错误有关。要确定原因,您可以启用日志记录(如其他答案中的建议)或分析核心转储文件的回溯(在macOSLinux上,例如Ubuntu)。

\n\n

如果您不知道原因(例如堆栈跟踪仅包含内存地址),您可以在Chrome 错误跟踪系统中创建新的支持票证(或仔细检查是否已经有票证)。在报告时,您应该通过转到chrome://crashes/页面上传并包含崩溃 ID,以便 Chrome 维护人员可以将内存地址转换为调试符号。

\n\n

或者,您可以自己解码故障转储

\n\n

另请参阅:Google Chrome 故障转储位于何处?

\n\n
\n\n

为了简化上述内容,以下是页面崩溃的主要原因:

\n\n
    \n
  • 您已发现该错误(在网站上或通过网络浏览器本身)。

    \n\n
      \n
    • 网站错误

      \n\n
        \n
      • 示例:JavaScript VM 达到了最大分配内存(内存不足崩溃)。

        \n\n

        要检查这一点,请运行DevTools并检查“内存”选项卡。如果是这种情况,代码应该在潜在的内存不足崩溃之前自动暂停(例如问题 810015)。如果是这样,请向网站所有者报告问题,或分析 JS 代码以查找错误。

      • \n
    • \n
    • 浏览器错误

      \n\n
        \n
      • 考虑禁用扩展或在隐身模式下运行。
      • \n
      • 考虑删除缓存文件
      • \n
      • 报告错误
      • \n
      • 重新安装浏览器。
      • \n
      • 使用不同版本的 Chrome,例如ChromiumDevCanary通道。
      • \n
      • 使用不同的浏览器,例如 Epic、Firefox、Opera、Brave、Waterfox、Torch 或其他。
      • \n
      • 如果问题重复出现,您可以尝试使用调试符号重新编译Chrome 源代码并分析堆栈跟踪或报告它。
      • \n
    • \n
  • \n
  • 您已达到系统中打开文件的最大数量(请参阅:#787381)。

    \n\n

    在 Linux/Unix/macOS 上,要验证这一点,请运行:

    \n\n
    sysctl -a | grep files\n
    Run Code Online (Sandbox Code Playgroud)\n\n

    并检查是否kern.num_files达到极限kern.maxfiles

    \n\n

    如果是这种情况,请通过运行以下命令来增加限制:

    \n\n
    sysctl -w kern.maxfiles=20480\nwhich launchctl && launchctl limit maxfiles 65536 unlimited\nwhich ulimit && ulimit -c unlimited\n
    Run Code Online (Sandbox Code Playgroud)
  • \n
  • 您可能有一些恶意软件/病毒会更改您的 Chrome 文件,从而导致崩溃。

  • \n
  • 您可能会遇到一些与硬件内存相关的问题。因此,运行一些测试(例如memtest)。
  • \n
\n\n
\n\n

苹果系统

\n\n

要显示来自 Chrome 的日志,请运行:

\n\n
log stream --level debug --predicate \'processImagePath contains "Google"\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者通过运行控制台应用程序,您还可以在其中检查任何故障转储(或签入~/Library/Logs/DiagnosticReports)。请参阅:在 Chrome 中调试 \xe2\x80\x9cAw、Snap!\xe2\x80\x9d 错误

\n\n
\n\n

调试

\n\n

如果以上都没有帮助,您可以考虑从源代码编译Chrome(需要很长时间),然后直接从终端运行。之后,每个 \xe2\x80\x9cAw、Snap!\xe2\x80\x9d 错误后面应该有完整的堆栈跟踪,包括发生该错误的源代码文件中的函数和行。

\n