Editor Debug Symbol
엔진 코드를 디버깅해야하는 상황이 생길 수 있다. 에픽게임즈 라이브러리에서 Editor Debug Symbol을 설치하면 엔진 코드 디버깅이 가능하다.
추가로, 코드 최적화로 인해 중단점을 놓지 못하거나, 콜스택이 생략되는 문제가 있는데, 이 경우 Visual Studio의 Editor configuration을 DebugGame Editor로 설정하면 된다.
에픽 게임즈 런처
디버깅을 위한 편집기 기호 설치
Full Build Unreal Engine
다른 방법으로 언리얼 엔진을 풀빌드하는 방법도 있다.
다음 링크를 통해 언리얼 엔진을 클론하고, 디버깅 심볼도 포함되도록 풀빌드하면 엔진 코드를 디버깅할 수 있다.
또한, 이 방법을 이용한다면 엔진코드 자체를 수정할수도 있을 것이다.
https://github.com/EpicGames/UnrealEngine
디버깅에 관련한 기타 여러가지 이야기
www.youtube.com/watch?v=TXZGIvpEhW8
소스코드
다음 코드로 스택트레이스를 로그로 남길 수 있다.
FDebug::DumpStackTraceToLog(ELogVerbosity::Type::Error);
다음 코드로 현재 호출되는 스레드 ID를 알 수 있다.
uint32 ThreadId = FPlatformTLS::GetCurrentThreadId();
FString ThreadName = FThreadManager::Get().GetThreadName(ThreadId);
다음과 같이 FullName과 Outer 객체를 활용하여 현재 오브젝트의 인스턴스를 확인할 수 있다.
FString FullName = GetFullName();
FString OuterFullName = GetOuter()->GetFullName();
FString FuncName(__FUNCTION__);
UE_LOG(LogTemp, Error, TEXT("%s FullName : %s OuterFullName : %s"),
*FuncName, *FullName, *OuterFullName);
덤프파일
언리얼 엔진에서 크래시가 나는 경우 minidump 파일을 Saved/Crashes 디렉터리에 스테이징한다. 이 덤프파일을 이용하면 크래시가 난 시점의 메모리 상태로 디버깅을 진행할 수 있다. 이 파일을 visual studio에 드래그하고 오른쪽 네이티브 전용(으)로 디버그 버튼을 누르면 디버깅을 진행할 수 있다.
'게임 엔진 > Unreal' 카테고리의 다른 글
[Unreal] 언리얼 프로젝트 소스코드를 옮기는 방법 (Redirect) (0) | 2021.01.19 |
---|---|
[Unreal] 언리얼 메모리 관리 시스템 (Smart Pointer, GC) (5) | 2021.01.19 |
[Unreal] [Example] 인공지능 에이전트 (AISense) (0) | 2021.01.10 |
[Unreal] 테이블 데이터 이용 방법 (DataTable) (0) | 2020.12.30 |
[Unreal] [Example] Delegate 사용방법 (1) | 2020.12.29 |