欢迎光临散文网 会员登陆 & 注册

bUseMallocProfiler导致自定义uasset(Component)读取失败,运行时崩溃

2020-10-08 17:49 作者:天空游荡的鱼  | 我要投稿

     最近踩了一个大坑,突然项目就启动不了。一直以为是其他小伙伴错误提交了内容导致,所以没去理睬。这不,又过了两周,发现没有其他人报异常。感觉就我自己有问题,所以今天就着手看看这个问题。下面就是问题定位的心理活动过程和结果

    查Bug就像破案,首先的收集线索。所以就先还原了最近的操作。最近就干了三件事

  1. 内存分析

  2. Gameplay Ability System

  3. 贴图与材质Asset的保存于读取

报错信息是什么呢?读取uasset时,内存分配失败

完全没头绪的情况下,还是用了计算机中最经典的“插拔法”


首先,确定是不是项目的问题?通过打开和运行项目,发现一切正常

其次,确定是不是引擎问题?使用官方下载版本,没有出现任何问题;使用源码编译版本,Crash

试了两次,就发现了可能是修改引擎源码导致的。但还是没有头绪,因为源码修改应该都基本注释掉了,GAS的开发应该也不会影响到引擎。


    那么,还是得回到代码Crash的地方。 通过查看堆栈,找到了一些uasset的名字,然后就找同事逐个去检查。 并未发现什么异常。但却有一些共同点,都调用或者引用了自定义的Component或者其他资产。

    然后,我就Editor的Content中直接打开这些被引用的资产,确实如预期一样,Crash!问题的范围是锁定了,但找不到原因。所以又回到事情的原点,最近干的三件事。

    内存分析改了啥呢?

1. MallocLeakDetection.h 中 MALLOC_LEAKDETECTION 0 改为1, 来查看内存mallocleak.start,mallocleak.stop,mallocleak.report

2. Engine\Saved\UnrealBuildTool\BuildConfiguration.xml新加了<bUseMallocProfiler>打开之后可以输入MPROF、MPROF MARK、MPROF STOP来抓内存

最后通过检查,确是<bUseMallocProfiler>true</bUseMallocProfiler>导致的,删掉该配置,重新编译引擎。OK了。

而且还有一个现象,在蓝图中鼠标右键添加阶段,要5s才能弹出。


bUseMallocProfiler导致自定义uasset(Component)读取失败,运行时崩溃的评论 (共 条)

分享到微博请遵守国家法律