返回介绍

系统崩溃

发布于 2021-06-19 18:03:25 字数 2244 浏览 870 评论 0 收藏 0

系统崩溃检查表

  • 禁用代码剥离(并在 iOS 设备上设置“因异常而减慢 (slow with exceptions)”)
  • 按照优化所创建的 iOS 播放器大小说明 (https://www.wenjiangs.com/doc/4kfFcQ6S),确保游戏不会在 iOS 上因代码剥离而崩溃。
  • 验证崩溃不是由内存不足所引起(重新启动设备,将设备的最大 RAM 用于该平台,务必观察日志信息)

编辑器上的 Editor.log

调试消息、警告和错误都出现在控制台上。同时 Unity 会将状态报告输出到控制台,包括加载资源、初始化 mono、图形驱动器信息。

如果想了解目前的情况,请查看 editor.log。您将在该日志中看到所有内容,而非只有控制台部分。尝试了解目前的情况,并查看编码部分的完整日志。这样有助于找出导致 Unity 崩溃的理由或资源存在的问题。

Unity 也在设备上输出一些事项;安卓 (Android) 系统的 Logcat 控制台和 iOS 系统的 Xcode gdb 控制台

Android

在安卓 (Android) 上调试

  1. 使用 DDMSADB 工具
  2. 观察堆栈轨迹(安卓 (Android) 3 或更新版本)。使用 c++filtndk 的一部分)或其他方法,如:http://slush.warosu.org/c++filtjs 来解码损坏的函数调用
  3. 查看出现崩溃的 .so 文件:
    1. libunity.so - Unity 代码或用户代码出现崩溃。
    2. libdvm.so - Java 世界 Dalvik 虚拟机的某个位置出现崩溃。找出 Dalvik 虚拟机的堆栈轨迹,查看 JNI 代码或 Java 相关的任何内容(包括可能对 AndroidManifest.xml 作出的更改)。
    3. libmono.so – Mono 错误或正在进行 Mono 非常厌恶的事项。
  4. 如果 crashlog 没有帮助,可以反汇编,大致了解已发生的事件。
    1. 使用 Android NDK 中的 ARM EABI 工具,如:objdump.exe -S libmono.so >> out.txt
    2. 在电脑堆栈轨迹中查看代码。
    3. 尝试在最新的 out.txt 文件中匹配代码。
    4. 向上滚动,了解出现崩溃的函数发生了什么。

iOS

在 iOS 上调试

  1. Xcode 带内置工具。Xcode 4 带非常不错的 GUI 来调试系统崩溃情况,Xcode 3 版本的稍差些。
  2. 完整的 gdb 栈 - 线程应用所有的 bt
  3. 启用空值软检查 (soft-null-check):

启用开发构建和脚本调试。这时未捕获到的空引用异常将通过适当的托管调用栈输出到 Xcode 控制台。

  1. 尝试关闭“快速脚本调用 (fast script call)” 和代码剥离。这样能阻止一些随机崩溃,如一些由于使用罕用的 .Net 函数或映像所导致的崩溃。

策略

  1. 尝试找出出现崩溃的脚本,并在设备上使用 Mono Develop 进行调试。
  2. 如果崩溃似乎不是在脚本中,请仔细查看堆栈轨迹,其中应该会有一些发生情况的提示。复制并提交,我们会仔细查看。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文