背景
1、用UBT 打了一個exe的包,打開時遇到崩潰,想獲知這個崩潰時的中間信息,例如材質信息,于是我直接雙擊?打包位置下的崩潰dmp文件 (MyGame/Saved/Archived/WindowsClient/MyGame/Saved/Crashes/....dmp) 去查看堆棧。堆棧雖然看得到,但是很多中間變量都沒有了。
2、由于崩潰發生得很快,我沒有辦法用Rider去Attach它,AI建議我再在代碼中添加一段延時方法,如下:
#include?"HAL/PlatformProcess.h"
//?在代碼的合適位置添加,例如BeginPlay開始時
FPlatformProcess::Sleep(10.0f);?//?延遲10秒
但我覺得比較麻煩,因此沒有這么做。
Rider以PC的配置編譯調試
如上圖所示,直接用Rider編輯器去以PC的配置(DebugGame - Client - Win64 )來編譯、打開與下斷點,查看問題。
下面日志信息是 Console(上圖)中的第一行,體現了這種操作下,編譯的產物(即執行的exe)的位置:
D:\MiniPC2\MyGame\Binaries\Win64\MyGame_MiniClient-Win64-DebugGame.exe D:\MiniPC2\MyGame\MyGame.uproject -skipcompile
很快,你就如愿以償得到斷點了。此時用到的是以下Cooked資源:
補充
Debug和DebugGame 兩種編譯模式下的區別,在于 前者的引擎也是保存了很多調試信息的,因此更慢,而后者的引擎是刪除了調試信息的。Debug和DebugGame 兩種編譯模式下,Game都能得到調試。