UnrealEngine5

[1-3] UE5 디버깅에 도움이 되는 매크로 (Assert)

만군마 2023. 2. 6. 21:36

※ 이 글은 언리얼 프로젝트 개발 시 "디버깅"에 도움이 되고자 올리는 글입니다.

이번 글에서는 UE5를 사용한 개발시 디버깅에 도움이 될 수 있는 매크로 (Assert)에

대한 정보를 전달하고자 한다.

 

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/Assertions/

 

어서트

 

docs.unrealengine.com

언리얼 도큐먼트에 자세한 내용이 적혀있으니 문서를 확인해보는것도 도움이 될 것이다.

 

 

 

1. Assert란?

주어진 코드가 가정하는 "상황""검증"하는 도구를 뜻한다.

해당 변수의 포인터가 nullptr인지 검증하는 것부터

특정 함수에 재진입했는지 여부까지의 검증이 가능하다.

UE5에서는 이런 유형의 "검증"을 위한 매크로를 제공하고 있다.

 

해당 UE5 매크로에 대한 정보는 여기서 찾아볼 수 있다.

AssertionMacros.h

 

2. 런타임 어서트(Assert) 매크로 종류

런타임 어서트 매크로는 총 3가지 카테고리로 나눌 수 있다.

1. "실행 중지"

2. "디버그 빌드에서 실행 중지"

3. "실행 중지하지 않고 오류 보고"

"실행 중지", "실행 중지하지 않고 오류 보고" : DO_CHECK define에 따라 컴파일

"디버그 빌드에서 실행 중지" : DO_GUARD_SLOW define에 따라 컴파일

※ define 중 어느 하나가 0 으로 설정되면 매크로는 비활성화되어 실행에 영향을 끼치지 않는다.

 

 

 

3. Check(표현식)

결과 : 어서트(Assert) 결과가 false이면 실행을 "중지"시킨다.

표면식은 매크로가 빌드에 컴파일되는 경우에만 실행됩니다(DO_CHECK=1)

라이라 프로젝트 (check 표현식 예) ​

 

4. Verify(표현식)

결과 : (DO_CHECK=1)일 경우 check(표현식)과 똑같은 역할을 한다.

But! 이 표현식은 DO_CHECK 가 꺼져있어도 실행됩니다.

변수 할당이 가정한 대로 되었는지 검증하는 데 사용할 수 있습니다.

라이라 프로젝트 (verify 표현식 예)

 

 

5. Checkf(표현식,...), Verifyf(표현식,...)

결과 : check와 verify에 이어 checkf와 verify는 컴파일 면에서 check()와 같지만

표현식이 true가 아닐 경우 디버깅에 도움이 되는 추가 정보를 출력할 수 있다.

라이라 프로젝트 (verifyf 표현식 예)

 

 

6. Ensure(표현식)

결과 : 표현식을 검증하여 실패하면 그 지점까지 이르는 "콜스택"을 생성

라이라 프로젝트 (ensure 표현식 예)

 

 

※ 언리얼(UE5)을 사용할때 해당 런타임 어서트(Assert) 매크로를 사용하면 원하는 위치의 값을

디버깅 하는데 매우 큰 도움이 된다!!