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


31

有人知道是否存在确定“ Aw Snap!”原因的实用方法。偶尔出现在Google Chrome浏览器中的消息?Chrome是否有我可以参考的错误日志?我怀疑此问题是由代码中的递归循环引起的,然后该循环吞没了所有内存?有什么办法可以确认吗?



Answers:


28

有,请参见此处的说明:对于Chrome中的常规登录,您可以尝试:


1
我认为第一种选择将有助于隔离此问题。开发人员控制台挂起之前,它无法输出任何使用信息。
QFDev 2013年

2
我启用了日志,并在chrome崩溃时,崩溃时未记录任何错误。是否有任何参考资料可以提供对日志项的见解?
哈迪姆·阿里


您能否在此答案中包含链接的缩写内容。如果链接消失,它将过时。
mafu

3
在这种情况下,JavaScript控制台通常没有用,因为当页面崩溃时,开发工具会断开连接。
PawnStar

28

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

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

--enable-logging --v=1

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


5
之所以要投票,是因为--enable-logging --v=1 在对接受的答案进行编辑之前,早已提到了该帖子。
CAD bloke

2

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

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

另外,您可以自己解码崩溃转储

另请参阅:Google Chrome浏览器崩溃转储文件位于哪里?


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

  • 您已经找到了该错误(无论是在网站上还是通过网络浏览器本身)。

    • 网站错误

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

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

    • 浏览器错误

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

    在Linux / Unix / macOS上,要进行验证,请运行:

    sysctl -a | grep files
    

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

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

    sysctl -w kern.maxfiles=20480
    which launchctl && launchctl limit maxfiles 65536 unlimited
    which ulimit && ulimit -c unlimited
    
  • 您可能拥有某些恶意软件/病毒,这些恶意软件/病毒会更改您的Chrome文件,从而导致崩溃。

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

苹果系统

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

log stream --level debug --predicate 'processImagePath contains "Google"'

或通过运行控制台应用程序,您还可以在其中检查是否有崩溃转储(或检入~/Library/Logs/DiagnosticReports)。请参阅:在Chrome中调试“ Aw,Snap!”错误


调试

如果以上方法均无济于事,则可以考虑从源代码编译Chrome(需要很长时间),然后直接从终端运行。之后,在每个“ Aw,Snap!”错误之后应加上完整堆栈跟踪,包括在源代码文件中发生的函数和行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.