디버깅, 로그와 성능 점검
23강. 디버깅, 로그와 성능 점검
1. 이번 강의에서 해결할 문제
“가끔 적이 안 나옵니다”라는 증상만 있고 어느 조건에서 실패했는지 알 수 없습니다. 재현 조건, 관찰 로그, 가설과 검증 결과를 분리해 원인을 좁힙니다.
2. 학습 목표
3. 핵심 개념
로그는 실패 원인을 설명할 문맥을 남겨야 합니다. Actor 이름, World 시간, 클래스와 핵심 상태를 포함하되 매 프레임 같은 메시지를 남기지 않습니다. check는 절대 깨지면 안 되는 개발 가정을 즉시 드러내고, ensure는 오류를 보고하면서 실행을 이어갈 수 있는 상황에 사용합니다. 사용자 입력이나 에셋 누락처럼 예상 가능한 실패는 조건 검사와 명확한 로그로 처리합니다.
성능은 추측하지 않습니다. stat unit, stat game, Unreal Insights로 Game Thread와 특정 구간을 확인하고 동일한 적 수·시간·맵에서 비교합니다.
4. 단계별 실습
파일 경로: Source/TopDownSurvival/SurvivalLog.h
#pragma once
#include "CoreMinimal.h"
DECLARE_LOG_CATEGORY_EXTERN(LogSurvival, Log, All);
파일 경로: Source/TopDownSurvival/SurvivalLog.cpp
#include "SurvivalLog.h"
DEFINE_LOG_CATEGORY(LogSurvival);
EnemySpawner 진단 로그
#include "SurvivalLog.h"
if (EnemyTypes.IsEmpty())
{
UE_LOG(LogSurvival, Error,
TEXT("%s has no EnemyTypes; spawning stopped"), *GetName());
GetWorldTimerManager().ClearTimer(SpawnTimerHandle);
return;
}
ensureMsgf(MaxActiveEnemies > 0,
TEXT("%s MaxActiveEnemies must be positive"), *GetName());
PowerShell · 실행 위치: 프로젝트 루트
$LogFile = ".\Saved\Logs\TopDownSurvival.log"
Get-Content $LogFile -Tail 80 -Wait
Unreal Editor Console
stat unit
stat game
stat fps
showdebug AI
Unreal Insights 캡처 절차와 메뉴는 엔진 버전에 따라 달라질 수 있으므로 프로젝트 버전의 Epic 문서를 확인합니다. 캡처 전 테스트 시나리오를 “적 40개, 60초, 같은 맵”처럼 고정합니다.
5. 코드가 동작하는 이유
전용 로그 카테고리는 Survival 메시지만 필터링하고 빌드 설정별 Verbosity를 관리하게 합니다. ensureMsgf는 잘못된 설정을 문맥과 함께 보고합니다. 정량 측정은 Object Pool이나 Tick 제거가 실제 프레임 시간에 영향을 줬는지 판단할 근거를 제공합니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
디버깅, 로그와 성능 점검 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.