블루프린트 디버거(Blueprint Debugger)를 사용하면 에디터에서 플레이(Play-In-Editor) (PIE) 또는 에디터에서 시뮬레이트(Simulate-In-Editor) 모드로 프로젝트 실행을 일시정지할 수 있습니다. 일시정지한 후에는 중단점(Breakpoint) 을 사용해 블루프린트나 레벨 블루프린트 그래프를 살펴볼 수 있습니다.
디버깅 컨트롤
블루프린트 디버거 컨트롤 설정은 프로젝트가 실행 중일 때 [툴바] (programming-and-scripting\blueprints-visual-scripting\Editor\UIComponents\Toolbar)에서 활성화 됩니다.
디버깅하려는 블루프린트의 종류와 디버깅 세션의 현재 스테이트에 따라 다른 디버깅 컨트롤이 표시됩니다. 중단점에 도달했을 때처럼 필요한 경우에만 표시되는 컨트롤도 있습니다.

블루프린트 디버거 창은 블루프린트 에디터의 툴(Tools) 메뉴나 디버그(Debug) 메뉴에서 사용할 수 있습니다. 이 창은 PIE나 SIE 모드가 활성화 상태일 때 컨텍스트에 따라 디버깅 버튼을 표시해줍니다.
중단점
중단점 은 블루프린트 그래프 노드에 배치할 수 있는 마커입니다.
활성 중단점을 가진 노드를 PIE나 SIE 모드에서 실행하려고 하면 시뮬레이션이 일시정지되고 블루프린트 에디터의 그래프 뷰를 통해 노드 위치로 이동됩니다. 일시정지되면 변수의 값을 확인하고 블루프린트의 실행 흐름을 살펴볼 수 있습니다.
블루프린트의 모든 중단점은 블루프린트 디버거(Blueprint Debugger) 창에 표시되며, 선택하면 블루프린트의 그래프 내에서 볼 수 있습니다.
노드에 중단점을 배치하려면 노드를 우클릭하고 컨텍스트 메뉴에서 중단점 추가(Add Breakpoint) 를 선택합니다. 중단점을 추가하면 노드의 좌측 상단에 빨간색 팔각형이 표시됩니다. 노드를 우클릭하거나 디버거 창의 중단점 항목으로 이동한 뒤 중단점 제거(Remove Breakpoint) 를 선택하면 중단점을 삭제할 수 있습니다.

이 중단점은 Print 노드가 실행되기 전에 게임을 중단시킵니다.
중단점을 제거하지 않고 일시적으로 비활성화하려면 블루프린트 노드를 우클릭하거나 디버거 창의 중단점 항목으로 이동한 뒤 컨텍스트 메뉴에서 중단점 비활성화(Disable Breakpoint) 를 선택합니다.
중단점을 비활성화하면 빨간색 팔각형에 외곽선이 표시됩니다. 비활성화된 중단점은 다시 활성화하기 전까지 실행되지 않습니다. 이 방법은 중단점을 반복적으로 삭제하고 다시 만드는 것보다 편리하며, 사람의 실수에도 덜 취약합니다.

이 중단점은 비활성화되었으며 현재 실행되지 않지만 필요한 경우 다시 활성화될 수 있습니다.
비활성화한 중단점을 다시 활성화하려면 노드를 우클릭(right-click) 하고 중단점 활성화(Enable Breakpoint) 를 선택하거나, 디버거 창(Debugger window) 에서 중단점 옆에 있는 팔각형 아이콘을 클릭합니다. 또는, 디버거(Debugger) 창에서 중단점을 우클릭(right-click) 한 다음 중단점 활성화(Enable Breakpoint) 를 선택해도 됩니다.
중단점은 디버깅 세션을 진행하는 과정을 포함해 언제든지 활성화 및 비활성화, 또는 제거될 수 있습니다. 중단점은 프로젝트의 .ini
파일에 저장되므로 에디터 세션이 바뀌어도 유지되지만, 프로젝트의 다른 개발자들을 위해 복제되지는 않습니다.
유효하지 않은 위치에 중단점을 배치하면 느낌표가 있는 노란색 아이콘이 나타납니다.
간혹 블루프린트를 컴파일하면 이 문제가 해결되기도 합니다. 하지만 그렇지 않은 경우, 중단점 아이콘 위에 마우스를 올리면 경고 메시지가 표시됩니다.

이 중단점은 유효하지 않으며 도달이 불가능합니다. 경우에 따라 블루프린트를 리컴파일하면 문제가 해결되기도 합니다.
중단점으로 실행을 일시정지하면 에디터에서 노드가 강조 표시되고 커다란 빨간색 화살표가 나타납니다.

여기서는 방금 중단점에 도달해 실행이 일시정지되었습니다.
감시값
감시값(Watches) 은 디버깅 세션을 진행하는 동안 확인할 수 있도록 블루프린트 노드의 핀 값을 트래킹합니다.
감시되는 핀은 그래프에서 가장 최근에 노드를 실행했을 때 할당된 값을 유지합니다.
핀 감시를 시작하려면 블루프린트 그래프에서 핀 이름을 우클릭하고 컨텍스트 메뉴에서 이 값 감시(Watch this value) 를 선택합니다. 이미 감시 중인 핀이라면 이 값 감시(Watch this value) 대신에 이 값의 감시를 중단합니다(Stop watching this value) 가 표시됩니다.

중단점에서 멈춰 있는 동안 핀 위에 마우스를 올리면 인터랙티브 툴팁이 나타납니다. 이 툴팁은 해당 핀을 감시할 때 디버거에 표시되는 것과 같은 직접적인 디버그 정보를 알려줍니다.
아직 노드가 실행되지 않은 핀은 디버깅 정보를 이용할 수 없습니다. 이 경우 데이터 값이 아니라 해당 내용을 알려주는 메시지가 표시됩니다.
그 이유는 노드가 기반 코드를 최소 한 번은 실행해야 핀의 값이 업데이트되기 때문입니다.
블루프린트 변수 노드도 코드를 실행해야 변수 값을 얻을 수 있고, 이 과정은 다른 노드가 해당 변수의 출력 값에 액세스를 시도할 때에만 이루어집니다.
블루프린트 디버거
블루프린트 디버거(Blueprint Debugger) 창에는 중단점, 감시점, 실행 추적 스택이 표시됩니다.
이 창은 중단점을 사용하는 동안 코드를 중지 및 재개하거나 단계별로 살펴볼 수 있는 실행 컨트롤도 제공합니다.
여러 탭을 통해 전체 실행 콜 스택과 중단점, 감시, 특정 블루프린트 인스턴스의 콜 스택 정보를 볼 수 있습니다.

데이터 플로 탭
데이터 플로(Data Flow) 탭 은 감시하려는 모든 데이터를 표시하여 디버깅 속도를 높여줍니다.
이 탭은 선택한 블루프린트 클래스의 모든 인스턴스가 나열되는 오브젝트 필터링 기능을 지원하며, 이 블루프린트 클래스의 모든 프로퍼티를 점검할 수 있습니다.
에디터에서 열며 현재 콜 스택의 일부이기도 한 블루프린트 클래스를 감시할 수 있습니다.
실행이 일시정지되면 현재 데이터가 들어 있는 종합 콜 스택을 볼 수 있습니다.
여기서 다른 블루프린트로 이동하여 프로퍼티 값과 노드 출력을 확인할 수도 있습니다.
이 뷰는 배열, 세트, 맵, 기타 구조체의 확장을 지원하므로 포함된 모든 데이터를 효율적으로 볼 수 있습니다.
콜 스택
블루프린트 디버깅 세션에 사용할 수 있는 콜 스택(Call Stack) 은 C++ 개발 환경의 일반적인 콜 스택과 비슷한 개념을 가지고 있습니다.
콜 스택은 블루프린트 비주얼 스크립팅 함수와 네이티브(C++) 코드 함수 사이의 실행 플로를 보여줍니다. 현재 실행 중인 블루프린트 비주얼 스크립팅 함수는 스택 맨 위에 표시됩니다.
블루프린트 매크로는 콜 스택에 표시되지 않습니다. 대신 호출된 함수의 일부로 나타납니다.

위의 블루프린트 함수는 반복적으로 계승 계산을 수행합니다. 중단점은 함수 끝에 배치되었습니다.
중단점에 도달하면 콜 스택은 현재 실행 중인 함수부터 시작하여 호출 함수까지 아래로 나열합니다.
즉, 각 줄의 항목에는 함수의 이름이 쓰여 있고, 바로 아래에는 해당 함수를 호출한 함수가 있습니다. 반복적(자기 호출) 함수의 경우 스택에 동일한 함수 이름이 여러 번 나타날 수도 있습니다.

이 콜 스택은 위에서 본 계승 함수를 다섯 층위로 반복 호출하는 경우를 보여줍니다. 이 함수는 원래 액터인 메인 블루프린트 그래프에서 호출되었으며, 차례로 네이티브(C++) 코드에서 호출된 BeginPlay 이벤트에 의해 트리거되었습니다.
블루프린트 콜 스택을 C++ 콜 스택에서 검사하는 것은 지루한 작업일 수 있습니다. IDE에서 블루프린트 콜 스택의 스냅샷을 얻으려면, 중단점에서 멈춰 있는 동안 직접 실행 창에서 {,,UnrealEditor-Core}::PrintScriptCallstack()
을 호출하세요. 이 기능은 에디터 빌드에서만 작동합니다.
실행 추적
실행 추적(Execution Trace) 스택은 가장 최근에 실행된 노드 목록을 맨 위에 표시합니다.

이 목록은 디버깅 시 그래프를 단계별로 수행하는 과정에서 업데이트됩니다.