写在前面

  • 如果在Player运行时突然崩溃,仅靠Player.log日志文件不能定位引起崩溃的代码,那么可以尝试利用dmp(仅限Windows平台)文件定位崩溃原因。

正文

环境

  • Unity 2020.3.21f1 (64-bit),IL2CPP后端,Windows平台。
  • Visual Studio 2019

先让Unity崩溃

  • 想要得到dmp文件,必须先让Unity崩溃。我的测试设计很简单,场景有一个按钮,点了按钮就会让Unity崩溃。场景效果如下图:

  按钮的代码TestCrash.cs如下(参考链接:“怎样能够强制Unity应用Crash”),我在ClickCrash方法中写了强制崩溃:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Diagnostics; public class TestCrash : MonoBehaviour
{ public void ClickCrash()
{
UnityEngine.Debug.LogFormat($"<color=yellow>ForceCrash</color>");
Utils.ForceCrash(ForcedCrashCategory.FatalError); } }

  在编辑器上,Unity的表现是突然卡住,然后弹出向Unity官方发送报错的窗口,关闭这个窗口后编辑器也会被关闭。

利用dmp文件定位崩溃代码  

  • 编辑器上可以成功崩溃后就打Player,如下图,BuildSetting窗口务必要勾上Development Build,再勾上Deep Profiling Support,不然即使得到dmp文件也无法具体定位。

  打出的Player文件夹内容如下图,这里我的Player叫2019TestMisc.exe。

  顺便一提,我在Assembly-CSharp4.cpp里找到了我写的测试代码。

  运行2019TestMisc.exe,能正常崩溃,这里的表现也是突然卡住,然后弹出向Unity官方发送报错的窗口,关闭这个窗口后2019TestMisc.exe也会被关闭。

  UnityManual有介绍在哪里可以看Crash文件,我的Crash文件夹路径如下图:

  打开文件夹就能看到crash.dmp文件和Player.log。

  UnityManual有调试说明,这里我用Vs打开crash.dmp文件,如下图,它长这样:

  我按照调试说明设置了符号路径,如下图,为了能尽快定位崩溃,我在“自动符号加载首选项”里选了“加载除排除模块之外的所有模块”。

  开始调试,调试结果如下图,能看到它会定位到一个C++文件,调用堆栈窗口里能看到引起崩溃的具体脚本TestCrash和方法ClickCrash。

【Unity】使用dmp文件定位Player崩溃原因的更多相关文章

  1. VS2005(vs2008,vs2010)使用map文件查找程序崩溃原因

    VS 2005使用map文件查找程序崩溃原因 一般程序崩溃可以通过debug,找到程序在那一行代码崩溃了,最近编一个多线程的程序,都不知道在那发生错误,多线程并发,又不好单行调试,终于找到一个比较好的 ...

  2. dump文件定位程序崩溃代码行

    1.dump文件 2.程序对应的pdb 步骤一:安装windbg 步骤二:通过windbg打开crash dump文件 步骤三:设置pdb文件路径,即符号表路径 步骤四:运行命令!analyze -v ...

  3. 如何定位Release 版本中程序崩溃的位置 ---利用map文件 拦截windows崩溃函数

    1       案例描述 作为Windows程序员,平时最担心见到的事情可能就是程序发生了崩溃(异常),这时Windows会提示该程序执行了非法操作,即将关闭.请与您的供应商联系.呵呵,这句微软的“名 ...

  4. VS2008通过 map 和 cod 文件定位崩溃代码行

    VS 2005/2008使用map文件查找程序崩溃原因 一般程序崩溃可以通过debug,找到程序在那一行代码崩溃了,最近编一个多线程的程序,都不知道在那发生错误,多线程并发,又不好单行调试,终于找到一 ...

  5. 使用MAP文件快速定位程序崩溃代码行 (转)

    使用MAP文件快速定位程序崩溃代码行 =========================================================== 作者: lzmfeng(http://lz ...

  6. Windbg抓取程序崩溃的dmp文件的方法

    Windbg抓取程序崩溃的dmp文件的方法 一.        简介 windbg是在windows平台下,强大的用户态和内核态调试工具.相比较于Visual Studio,它是一个轻量级的调试工具, ...

  7. 用windbg查看dmp文件,定位bug位置

    windbg + .dmp + .pdb + 源代码,可以看到是哪个代码崩溃的 设置符号文件所在路径 File->Symbol File Path... 在输入框中填入.pdb文件所在的文件夹路 ...

  8. 使用VS2013分析DMP文件

    当一个发布的.NET应用程序出现app crash,无法通过日志分析异常原因时,就需要通过分析DMP文件了,传统方式是通过WinDbg来分析DMP文件,但是WinDbg用起来不是很方便,其实VS就是一 ...

  9. WinDbg分析DMP文件方法完全攻略

    前言:在C++实际开发过程中,开发出来的程序,一般情况下由开发人员进行单元测试,然后移交给测试人员进行测试.在开发人员测试出现的bug,我们可以直接在本地进行调试.如果测试人员测试出崩溃级别的bug, ...

  10. Windows系统上release版本程序bug跟踪解决方案-.dmp文件。

    使用场景: Win32程序在release模式下编译完成,发送给最终用户使用时,我们的程序有时候也会出现崩溃的情况,这个时候如果能快速定位崩溃原因或提供一些程序崩溃时的状态信息,对我们解决问题将会带来 ...

随机推荐

  1. 什么是cache

    什么是cacheTo minimize the quantity of control information stored, the spatial locality property is use ...

  2. 一键部署redis-5.0.5

    #!/bin/bash echo "-------------------------------------" echo -e "\e[1;33m 下面开始部署redi ...

  3. k8s_使用k8s部署博客系统-PV PVC(二)

    PV和PVC PV(PersistentVolume)在声明的时候需要指定大小和续写模式:["ReadWriteMany","ReadWriteOnce",&q ...

  4. 暴雪、迪士尼大佬用什么画画?RayLink远控软件助力解锁远程创作

    CG绘画从业者,如原画师.插画师.漫画家.设计师等,一定对数位板\数位屏不陌生,数位板\数位屏是完成CG绘画作品的重要绘图工具之一. 从画画小白到数字绘画大神,从0基础插画培训班学生到国际知名游戏.动 ...

  5. JavaScript 基础学习(三)

    BOM对象 BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作.使用 BOM,开发者可以移动窗口.改变状态栏中的文本以及执行其他与页面内容不直接相关的动作. 使 JavaScript 有能力与浏 ...

  6. 移动端性能测试--CPU资源

    一.背景 在很多场景下我们去使用 App,可能会碰到手机会出现发热发烫的现象.这是因为 CPU 使用率过高.CPU 过于繁忙,会使得整个系统无法响应用户,整体性能降低,用户体验变得相当差,也容易引起 ...

  7. axios进行图片上传

    进行图片的上传,一定要注意headers的设置:             headers:{"Content-Type":"multipart/form-data&quo ...

  8. Java方法之什么是方法?

    方法详解 何谓方法? System.out.println(),那么它是什么呢? 1.System:类 2.out:对象 3.println():方法 Java方法是语句的集合,它们在一起执行一个功能 ...

  9. 肖sir__网页线下面试

    第一题: 设计一下两个两位数相加的测试用例,说只能写数字不要写文字 第二题 淘宝订单怎么测试 功能测试: 1.测试订单输入的类型 2.测试金额数量:可创建等价类划分 3.测试库存数量变更 4.测试订单 ...

  10. 杭电oj 多项式求和

    Problem Description 多项式的描述如下:1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...现在请你求出该多项式的前n项的和.   Input 输入数据由2行组 ...