본문으로 건너뛰기

안동민 개발노트

본문 시작

블루프린트 디버깅 기초

Print String과 중단점, 디버그 오브젝트를 활용해 실행 흐름과 변수 값을 추적하는 기본 절차를 익힙니다.

어떤 프로그래밍이든 개발 과정에서는 예상치 못한 문제가 발생하기 마련입니다.

블루프린트 역시 예외는 아니죠.

우리가 만든 로직이 의도대로 작동하지 않을 때, 무엇이 문제인지 찾아내고 해결하는 과정을 디버깅(Debugging)이라고 합니다.

언리얼 엔진은 블루프린트의 문제를 효율적으로 찾을 수 있도록 다양한 디버깅 도구를 제공합니다.

이번 절에서는 블루프린트 디버깅의 가장 기본적인 방법들을 알아보겠습니다.

블루프린트 재현, 중단, 관찰, 수정 루틴

블루프린트 디버깅은 Print String을 흩뿌리는 일이 아니라 재현 조건을 고정하고 Debug Object, Breakpoint, Watch로 상태를 추적하는 과정입니다.

  1. 재현 고정

    맵, 액터 인스턴스, 입력 순서, 시작 상태를 먼저 고정합니다. scenario

  2. Debug Object 선택

    여러 인스턴스 중 실제 문제가 나는 액터를 디버그 대상으로 지정합니다. instance

  3. Breakpoint 배치

    벤트 시작점, 분기 조건, 값 변경 노드에 중단점을 둡니다. break

  4. Watch 관찰

    변수, 핀 값, 배열 길이, 참조 유효성을 실행 중에 확인합니다. watch

  5. 수정 검증

    수정 후 같은 재현 절차와 주변 흐름을 다시 실행합니다. verify


가장 간단하면서도 강력한 디버깅 방법 중 하나는 앞서 사용했던 Print String 노드를 활용하는 것입니다.

특정 시점에 변수의 값이 올바른지, 특정 로직이 예상대로 실행되는지 등을 화면에 출력하여 확인할 수 있습니다.

  • 사용 방법
    • 확인하고 싶은 변수나 노드의 출력 핀에서 드래그하여 Print String 노드를 추가합니다.
    • Print String 노드의 In String 핀에 변수를 연결하거나, 직접 출력하고 싶은 메시지를 입력합니다.
    • Print String 노드의 Duration 핀을 조절하여 메시지가 화면에 얼마나 오래 표시될지 설정할 수 있습니다. (기본값 2초)
  • 활용 예시
    • "캐릭터의 현재 체력: CurrentHealth"와 같이 변수 값을 함께 출력하여 실시간으로 변화를 확인합니다.
    • 특정 조건문(예: Branch 노드)의 True 또는 False 경로에 Print String을 연결하여, 어떤 조건이 만족되었는지 확인합니다.

Print String은 마치 요리 중간에 간을 보듯이, 블루프린트 로직의 특정 지점을 맛보는 것과 같습니다.

간단하지만, 문제의 원인을 좁혀나가는 데 매우 효과적입니다.


브레이크포인트(Breakpoint) 사용하기

Print String이 특정 지점의 값을 출력하는 방법이라면, 브레이크포인트는 블루프린트 실행을 특정 노드에서 멈추고 당시의 변수와 흐름을 확인하는 디버깅 기능입니다.

  • 사용 방법

    블루프린트 에디터의 이벤트 그래프에서 실행 흐름을 멈추고 싶은 노드의 실행 핀(Execution Pin)을 마우스 오른쪽 버튼으로 클릭합니다.

    컨텍스트 메뉴에서 토글 브레이크포인트(Toggle Breakpoint)를 선택합니다.

    브레이크포인트가 설정된 노드의 실행 핀이 빨간색으로 변하는 것을 확인할 수 있습니다.

    게임 월드에서 플레이(Play) 버튼을 클릭하여 게임을 실행합니다.

  • 디버깅 과정
    • 블루프린트의 실행 흐름이 브레이크포인트가 설정된 노드에 도달하면, 게임이 일시 정지되고 블루프린트 에디터가 활성화됩니다.
    • 블루프린트 에디터에서 실행이 멈춘 노드는 노란색으로 강조됩니다.
    • 디버그 필터(Debug Filter) 패널이나 콜 스택(Call Stack) 패널을 통해 현재 어떤 블루프린트의 어떤 함수가 실행 중인지 확인할 수 있습니다.
    • 가장 중요한 것은 변수 패널(Variables Panel)입니다. 실행이 멈춘 시점에서 모든 변수들의 현재 값을 확인할 수 있습니다. 이 값을 통해 로직이 잘못된 방향으로 흘러간 원인을 파악할 수 있습니다.
    • 블루프린트 에디터 상단의 계속(Continue) 버튼(녹색 재생 버튼 모양)을 클릭하면 다음 브레이크포인트까지 또는 게임 종료 시까지 실행이 다시 진행됩니다.
    • 단계별 실행(Step Over) 버튼(파란색 화살표 모양)을 클릭하면 현재 노드만 실행하고 다음 노드에서 다시 일시 정지합니다. 이를 통해 한 노드씩 실행 흐름을 따라가며 문제를 세밀하게 추적할 수 있습니다.

브레이크포인트는 마치 정밀 검사를 위해 컨베이어 벨트를 멈추는 것과 같습니다.

특정 시점의 모든 상태를 파악하여 복잡한 문제를 해결하는 데 필수적인 기능입니다.


블루프린트 디버깅 흐름

Print String으로 넓게 확인하고, 브레이크포인트와 Watch로 좁혀 들어가면 노드 흐름의 실제 값을 안전하게 추적할 수 있습니다.

  1. 1
    Print String

    벤트가 호출되는지 빠르게 확인하는 첫 단계입니다.

  2. 2
    Breakpoint

    문제가 시작되는 노드에 멈춤 지점을 걸어 실행 순서를 봅니다.

  3. 3
    Watch Value

    변수와 핀 값이 기대와 다른 순간을 찾습니다.

  4. 4
    Step 실행

    한 노드씩 진행하면서 분기 조건과 참조가 바뀌는 지점을 확인합니다.

  5. 5
    블루프린트 실행 추적 순서

    레벨에 여러 인스턴스가 있으면 Debug Object를 먼저 고릅니다. 임시 출력은 작업 후 제거해 화면과 로그를 깨끗하게 유지합니다. 재현 조건을 적어 두면 같은 문제를 팀원이 빠르게 확인할 수 있습니다.

  6. 6
    증상별 도구

    호출 안 됨 Print 값 이상 Watch 순서 문제 Step 대상 혼동 Debug Object


디버그 오브젝트 선택 (Debug Object)

특정 액터 블루프린트가 여러 개 존재하거나, 특정 액터의 인스턴스에서만 발생하는 문제를 디버깅하고 싶을 때 유용한 기능입니다.

  • 사용 방법

    블루프린트 에디터가 열린 상태에서, 게임 월드의 뷰포트(Viewport)월드 아웃라이너(World Outliner)에서 디버깅하고 싶은 해당 액터 블루프린트의 인스턴스를 선택합니다.

    블루프린트 에디터 상단 툴바에 있는 디버그 오브젝트(Debug Object) 드롭다운 메뉴를 클릭합니다.

    드롭다운 목록에서 현재 월드에 선택된 블루프린트 인스턴스의 이름을 선택합니다.

    이제 이 블루프린트 인스턴스에서 발생하는 실행 흐름과 변수 값만 디버깅 정보에 표시됩니다.

이 기능을 사용하면 특정 대상에 대한 디버깅에 집중할 수 있어, 복잡한 환경에서 불필요한 정보를 걸러내고 문제 해결에 집중할 수 있습니다.

문제 재현은 증상, 조건, 실제 실행 경로를 분리한다

블루프린트 디버깅은 “안 된다”가 아니라 어떤 입력에서 어느 노드까지 실행됐는지 기록하는 일이다.

  1. Symptom
    Symptom 화면/로그

    관찰한 문제

  2. Condition
    Condition 재현되

    입력, 위치, 상태

  3. Trace
    Trace Print String/Breakpoint

    도달 노드 확인

  4. Fix check
    Fix check 수정 후 같

    조건으로 다시 확인

기준해석
좋은 재현3단계 이하로 반복 가능
나쁜 재현가끔 안 됨, 정확한 입력 없음
핵심재현 절차가 짧아질수록 원인도 좁아진다

디버깅은 블루프린트 개발의 필수적인 부분입니다.

처음에는 어렵게 느껴질 수 있지만, 이 기본적인 도구들을 꾸준히 활용하면서 문제 해결 능력을 키워나가는 것이 중요합니다.

이 절에서 다룬 절차를 반복해 문제 재현과 원인 추적 루틴을 먼저 고정하세요.

증상에 맞는 도구를 고르면 확인 시간이 줄어든다

Print String, Breakpoint, Debug Object는 서로 대체재가 아니라 관찰 깊이가 다른 도구입니다.

  1. 호출 여부와 값 변화를 빠르게 본다

    Print String 적합 이벤트가 실행되는지, 체력이나 점수 값이 변하는지 확인할 때 출력 노이즈 메시지가 많으면 실행 순서와 인스턴스를 헷갈리기 쉽습니다.

  2. 분기 조건과 핀 값을 멈춘 상태에서 본다

    Breakpoint 적합 Branch 결과가 예상과 다르거나 노드 순서를 따라가야 할 때 재현 조건 플레이 흐름이 멈추므로 재현 조건을 먼저 고정해야 합니다.

  3. 여러 액터 중 문제 인스턴스만 추적한다

    Debug Object 적합 같은 블루프린트가 레벨에 여러 개 있고 하나만 이상할 때 대상 변경 선택한 대상이 바뀌면 이전 값으로 판단하지 않도록 확인합니다.


이제 블루프린트 입문 과정을 마무리했습니다.

다음 장에서는 블루프린트의 핵심 요소들을 하나씩 깊이 있게 살펴보겠습니다.

마무리 점검 다이어그램

블루프린트 초기 디버깅 도구 선택표

Print String, Breakpoint, Watch, Debug Object는 서로 보완 관계입니다. 실행 경로, 값 변화, 인스턴스 착각을 분리하면 원인 범위가 빠르게 좁혀집니다.

  1. Print String 경로 표식

    실행 경로 Branch 앞뒤와 Event BeginPlay 진입점에 서로 다른 문구를 찍어 Output Log 순서를 확인합니다.

  2. Breakpoint·Watch 중단

    값 변화 Set 변수 직후 멈춰 Step Over와 Watch로 핀 값이 어느 노드에서 바뀌는지 확인합니다.

  3. Debug Object 대상 고정

    인스턴스 PIE에 같은 블루프린트가 여러 개라면 Debug Filter에서 실제 액터를 골라 추적합니다.

디버깅 도구를 상황별로 선택하는 기준을 마지막에 정리합니다.

디버깅 도구는 실행 여부, 핀 값, 인스턴스 추적 깊이에 맞춰 고른다

Print String을 많이 찍는 대신 증상에 맞는 관찰 깊이를 정하면 원인이 빨리 좁혀진다.

증상먼저 쓸 도구확인할 값
노드가 실행되는지 모름Print String실행 경로, Self 이름, 분기 결과
특정 핀 값이 틀림Breakpoint + Watch멈춘 순간의 입력 핀과 변수
레벨에 같은 BP가 많음Debug Object화면 속 액터와 에디터 관찰 대상 일치
Tick 로그가 뒤섞임조건부 출력문제가 나는 프레임과 상태만 남김

디버깅은 메시지를 많이 찍는 일이 아니라 실행 여부, 값 상태, 관찰할 인스턴스를 차례로 좁히는 과정입니다.

Print String에서 Breakpoint로 갈수록 원인을 더 좁게 본다

빠른 출력으로 범위를 잡고, 멈춤 디버깅으로 실제 인스턴스의 값을 확인한다.

  1. Print

    실행 여부와 분기 결과를 빠르게 확인한다.

  2. Narrow

    문제가 반복되는 그래프와 입력 조건을 고정한다.

  3. Breakpoint

    의심 노드에서 멈춰 핀 값과 호출 순서를 본다.

  4. Debug Object

    관찰할 액터 인스턴스를 정확히 선택한다.

  5. Fix & Remove

    원인을 고친 뒤 임시 출력과 중단점을 정리한다.

기준판정
좋은 출력변수명, Self 이름, 조건 결과가 함께 나온다.
나쁜 출력Tick마다 문자열만 쌓여 실행 순서가 더 흐려진다.