그냥 게임개발자

[UE5] - 3장 UE_LOG, 디버깅에 대해서(C++) 본문

UE5_Tutorial1

[UE5] - 3장 UE_LOG, 디버깅에 대해서(C++)

sudoju 2023. 9. 23. 23:55

이번 강의 부터는 인프런 루키스 강의를 보고 작성한 글인점을 알려드립니다.

 

1. UE_LOG

2. Debugging

 

1. UE_LOG

UE_LOG는 포맷된 메시지를 로그 파일에 기록하는 매크로
UE_LOG(카테고리, 로깅수준, 로그 포맷)
ex)
UE_LOG(LogTemp, Warning, TEXT("텍스트 테스트 : %d"), 3);

카테고리

- 어떤 카테고리에서 로그가 발생했는지 알려줄 수 있는 정보, 언리얼 엔진에서는 카테고리를 90개 이상을 기본적으로 제공하는데 카테고리를 잘 분류해서 넣어준다면 로그 정보가 상세해질 수 있음

커스텀 카테고리

엔진에서 제공하는 카테고리 이외에 직접 만들어서 사용 가능

프로젝트명.h파일에 가서
DECLARE_LOG_CATEGORY_EXTERN(<LOG_CATEGORY>, Log, All);
프로젝트명.cpp에는 헤더파일에서 선언해준 로그명을 추가
DEFINE_LOG_CATEGORY(<LOG_CATEGORY>);
각 로그를 사용할 클래스 헤더에 #include "프로젝트명.h"를 해주고 출력하게 할 수 있다.

로깅수준

로깅 시스템의 자세한 수준을 정의하는 열거형 타입

Log
로그 출력 O, 게임 내 출력 X
Warning
로그 및 게임 내 출력 O / 노란색
Error
로그 및 게임 내 출력 O / 빨간색
Display
로그 및 게임 내 출력 O
Fatal
로그 및 게임 내 출력 O / 로그가 비활성화 된 경우에도 충돌 발생
Verbose
로그 출력 O, 게임 내 출력 X / 일반적으로 자세한 로깅에 사용
VeryVerbose
로그 출력 O, 게임 내 출력 X / 일반적으로 스팸을 출력하는 상세한 로깅 사용

로그 포맷

텍스트만 출력하는 것이 아닌 상황에 따라 데이터의 내용을 출력 가능

FString

UE_LOG(LogTemp, Warning, TEXT("An Actor's name is %s"), *ExampleActor->GetName());

Bool

UE_LOG(LogTemp, Warning, TEXT("The boolean value is %s"), ( bExampleBool ? TEXT("true"): TEXT("false") ));

Integer

UE_LOG(LogTemp, Warning, TEXT("The integer value is: %d"), ExampleInteger);

Float

UE_LOG(LogTemp, Warning, TEXT("The float value is: %f"), ExampleFloat);

FVector

UE_LOG(LogTemp, Warning, TEXT("The vector value is: %s"), *ExampleVector.ToString());

Multiple Specifiers

UE_LOG(LogTemp, Warning, TEXT("Current values are: vector %s, float %f, and integer %d"), *ExampleVector.ToString(), ExampleFloat, ExampleInteger);

 

2. Debugging

 

솔루션 구성이 기본적으로 DevelopmentEditor라고 되어있다.

언리얼 엔진 솔루션 구성

DebugGame
DebugGameEditor
Development
DevelopmenetEditor
Shipping

DebugDevelopment의 차이점은 간단하게

DebugGame -> Debug

Development -> Release

라고 보면된다.

Shipping은 출시라고 보면된다.

 

Debug로 하게 되면 최적화가 덜 되는 대신에 디버그 심볼이 많기 때문에 디버깅에 용이하며 개발용도에 좋다.

 

Developmenet는 최적화가 더 잘된다고 한다. 하지만 디버깅할 때 일부 심볼이 사라지기 때문에 디버깅에는 좋지 않다고 볼 수 있다.

 

Shipping은 최적화로만 되어있어서 디버깅에는 매우 좋지 않다.

 

 

디버깅을 하고자 할 때 Debug Editor or DebugGameEditor를 설정해놓고 F5(디버깅 시작)하면 된다.

 

물론 에디터를 끄고 디버깅을 시작해야한다.

그러면 알아서 에디터가 켜진다.

근데 이 때 주의해야 할 점은 디버깅을 중지하면 에디터는 종료가 된다.

 

끄읕