UE的dump文件使用

大纲

  • 背景交代
  • 什么是crash dump files
  • 分析dump文件的方法
  • 其他工具

背景交代

本来按照顺序,这一章应该是讲blueprint或者UserWidget的,但是在学习的过程中,UE直接闪退,连一丢丢提示都没有;那以后真的在项目中出现这样的情况,想找原因,岂不是非常坑!所有需要一些方法来分析为什么闪退!

UE工程中有一个Saved目录,大致的目录内容如下:

其中有两个很明显是可以用来分析crash原因的文件夹:CrashesLogs

首先是看看Logs下有没有我们需要的看的文件信息:

这里就以2021-05-26 15:47的那次闪退日志去分析!打开该日志看看有没有我们需要看到的信息;

从头看到结尾,都没有发现很明显的闪退关键信息!到这里,就只能去看看Crashes文件夹下有没有我们想要的文件了!

Crashes目录下,我们看到一个时间相差不大的Crash目录!!

在该Crash目录下,看到了里面的内容,其中有一个 故障转储文件 ( crash dump files )

看都这个,瞬间就舒了一口气!

什么是Crash dump files

Crash dump files的中文翻译是故障转储文件;(在微软的文档中英文对比是这样的)

系统崩溃 (错误检查停止错误) 运行Windows错误时发生。 此事件生成的转储文件称为系统故障转储!

分析dump文件的方法

因为是UECrash dump file所以这里就直接是以visual studio作为工具说明了!

基本步骤有一下:

  • WDK的安装
  • 解释和查看

WDK的安装

我使用的Visual studio 2019 企业版;

勾选下载Windows 10 SDK (10.0.19041.0)(maybe有更新的版本,自行定义就好!)

等待下载安装重启后!

我们就能对上文中提到的UE4Minidump.dmp文件直接双击打开了!

直接打开后,看到基本还是一脸懵逼,但是至少有一个关键信息

但是这些根本就不足以让我们明确异常的位置呀!如果对gdb之类的比较熟悉的同学就会想到符号表

点击右侧的设置符号路径,在弹出来的对话框里选中UE项目的Binaries\Win64目录;这样在处理解释的时候就能加载指定的符号表了!

执行运行后,如果中途有缺少符号表的,就会有一下提示

但是基本不会影响我们看堆栈!

我们选择一下主线程

UE是开源的,到这里我们就基本能判定是怎么回事了!

其他工具

windows官方也提供了一个WinDbg的分析工具!这里就只有简单的说一下,其他的就要自行去学习了!

Microsoft store中下载WinDbg Preview

然后就是上文说到的WDK这里就不在说明!

启动WinDbg后,通过菜单打开Crash dump file或者直接将Crash dump file拖动到窗口内都可以。

打开后,能看到以下的界面

在这个界面里,我们可以使用相应的指令进行操作!

eg:

更多指令