有人知道是否存在确定“ Aw Snap!”原因的实用方法。偶尔出现在Google Chrome浏览器中的消息?Chrome是否有我可以参考的错误日志?我怀疑此问题是由代码中的递归循环引起的,然后该循环吞没了所有内存?有什么办法可以确认吗?
有人知道是否存在确定“ Aw Snap!”原因的实用方法。偶尔出现在Google Chrome浏览器中的消息?Chrome是否有我可以参考的错误日志?我怀疑此问题是由代码中的递归循环引起的,然后该循环吞没了所有内存?有什么办法可以确认吗?
Answers:
有,请参见此处的说明:对于Chrome中的常规登录,您可以尝试:
要启用日志记录,请使用以下命令行标志启动Chrome:
--enable-logging --v=1
输出将保存到Chrome用户数据目录中的文件chrome_debug.log
中。
日志文件的位置可以被CHROME_LOG_FILE
环境变量覆盖。
有关标志的完整列表,请检查:Google Chrome命令行开关。
或使用javascript控制台:
按Ctrl+ Shift+ J(Windows / Linux)或Cmd+ Option+ J(Mac)。
官方的Chrome Developers Twitter帐户已链接到一个网站,该网站可帮助您调试“ Aw snap”页面:http : //www.chromium.org/for-testers/enable-logging
建议使用以下标志启动Chrome:
--enable-logging --v=1
如果这样做,则可以从chrome_debug.log
Chrome的用户数据目录(位于的父目录中Default/
)或二进制构建文件夹(out\Debug
)中的文件中获取崩溃日志(如果使用的是调试版本)。
--enable-logging --v=1
在对接受的答案进行编辑之前,早已提到了该帖子。
在糟糕!该页通常与流程分段故障崩溃有关,崩溃可能与软件错误有关。要确定原因,您可以启用日志记录(如其他答案中所建议)或分析核心转储文件的回溯(在macOS,Linux上,例如Ubuntu)。
如果您不知道原因(例如,堆栈跟踪仅包含内存地址),则可以在Chrome错误跟踪系统上创建新的支持凭单(或再次检查是否已经存在)。报告时,您应该通过转至chrome://crashes/
页面上载并包含崩溃ID ,以便Chrome维护人员可以将内存地址转换为调试符号。
另外,您可以自己解码崩溃转储。
另请参阅:Google Chrome浏览器崩溃转储文件位于哪里?
为了简化上述操作,以下是页面崩溃的主要原因:
您已经找到了该错误(无论是在网站上还是通过网络浏览器本身)。
网站错误
示例:JavaScript VM达到最大分配的内存(内存不足崩溃)。
要进行检查,请运行DevTools并检查“ 内存”选项卡。在这种情况下,代码应在潜在的内存不足崩溃之前自动暂停(例如Issue 810015)。如果是这样,请将问题报告给网站所有者,或分析JS代码以查找错误。
浏览器错误
您已达到系统中打开的最大文件数量(请参阅:#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!”错误之后应加上完整堆栈跟踪,包括在源代码文件中发生的函数和行。