언어:
페이지 정보
태그:
엔진 버전:
언리얼 엔진

블루프린트 디버깅

언리얼 엔진

블루프린트 디버깅은 중단점을 사용해 에디터에서 플레이 또는 에디터에서 시뮬레이트 모드에서 게임 실행을 일시정지하고 블루프린트나 레벨 블루프린트의 그래프를 한 단계씩 진행하며 살펴볼 수 있는 매우 강력한 기능입니다.

디버깅 컨트롤

Blueprint Debugger (블루프린트 디버거)는 PIE 및 SIE 세션 도중 게임 실행을 제어할 수 있습니다. 이 컨트롤은 게임이 실행 중일 때 툴바 에 활성화됩니다. 디버깅 중인 블루프린트 유형과 디버깅 세션 현재 상태에 따라 다른 디버깅 컨트롤이 나타납니다. 어떤 컨트롤은 중단점 에 걸렸을 때와 같이, 관련이 있을 때만 활성화됩니다.

debugging_editor.png

디버그 탭은 블루프린트 에디터 의 창 메뉴와 블루프린트 디버거 양쪽에서 열 수 있는데, PIE 또는 SIE 에서 플레이 모드가 활성 상태일 때는 컨텍스트에 따른 디버깅 버튼이 표시됩니다.

blueprint_debugger.png

중단점

Breakpoint (중단점)은 블루프린트 그래프에 놓을 수 있는 마커입니다. 중단점이 있는 노드를 PIE 또는 SIE 모드에서 실행할 때가 되면, 게임이 일시정지되고 블루프린트 에디터의 그래프 뷰에서 노드 위치로 이동합니다. 여기서 변수 값을 관찰하고 블루프린트 안에서 실행 흐름을 살펴보거나 한 단계씩 진행할 수 있습니다. 지정한 블루프린트의 모든 중단점은 블루프린트의 그래프를 선택하면 볼 수 있습니다. 노드에 중단점을 배치하려면, 노드에 우클릭하고 컨텍스트 메뉴에서 Add Breakpoint (중단점 추가)를 선택합니다. 이 때 노드의 왼쪽 위 모서리에 빨강 단샛 팔각형이 나타납니다. 중단점은 노드를 다시 우클릭하거나, 디버그 탭에서 중단점 항목에 우클릭하고 Remove Breakpoint (중단점 제거) 명령을 선택하는 것으로 제거할 수 있습니다.

ActiveBreakpoint.png

이 중단점은 Print 노드가 실행될 때 게임을 중단시킵니다.

중단점을 완전 제거하지 않고 임시 비활성화하려면, 블루프린트 노드 자체를 우클릭하거나, 디버그 탭의 중단점 항목에 우클릭한 뒤 컨텍스트 메뉴에서 Disable Breakpoint (중단점 비활성화)를 선택하면 됩니다. 비활성화된 중단점은 빨간색 팔각형의 윤곽선으로 나타납니다. 비활성화된 중단점은 실행되지 않지만, 다시 활성화하기 쉽습니다. 이 프로세스는 중단점을 반복해서 지우고 다시 만드는 것보다 편리하고 사람이 실수할 확률이 적습니다.

InactiveBreakpoint.png

이 중단점은 비활성화되어 현재 아무것도 하지 않지만, 필요한 경우 쉽게 다시 활성화할 수 있습니다.

비활성화된 중단점을 활성화하려면, 노드에 우클릭하고 Enable breakpoint (중단점 활성화)를 선택하거나 디버그 탭에서 중단점 옆의 아이콘을 클릭합니다. 디버그 탭에서 중단점에 우클릭하고 Enable breakpoint (중단점 활성화)를 선택해도 됩니다. 디버깅 세션 도중을 포함해서 언제든 중단점을 생성, 비/활성화, 소멸할 수 있습니다. 중단점은 프로젝트 .ini 파일에 저장되므로, 에디터 세션간에 유지됩니다.

중단점을 유효하지 않은 위치에 배치하면, 노란색으로 느낌표가 표시될 수 있습니다. 경우에 따라, 블루프린트를 컴파일하면 문제가 해결됩니다. 그렇지 않은 경우, 중단점 아이콘에 마우스 커서를 올리면 설명이 표시됩니다.

WarningBreakpoint.png

이 중단점은 유효하지 않아 걸리지 않습니다. 경우에 따라, 블루프린트를 다시 컴파일하면 해결될 수도 있습니다.

중단점으로 실행이 일시정지되면, 에디터는 그 노드를 강조하고 초첨을 맞춘 뒤, 그 위에 커다란 빨간색 화살표를 표시합니다.

BreakingOnBreakpoint.png

중단점에 걸려 실행을 일시정지합니다.

디버그 탭과 블루프린트 디버거

Debug (디버그) 탭에는 디자이너가 중단점과 감시값 형태로 중요하다 지정한 정보가 표시됩니다. 그 뿐만 아니라 블루프린트에 속한 지금까지 실행된 모든 노드 스택을 추적하기도 합니다. 이 창에는 중단점 사용시 게임 실행 제어를 위한 컨트롤도 표시됩니다.

감시 창

Blueprint Watch Window (블루프린트 감시 창)은 감시하고자 하는 노드와 변수가 여러 블루프린트에 나뉘어 있어도 바로 가기를 제공하여 디버깅 속도를 높일 수 있도록 설계되었습니다. 에디터에서 연 모든 블루프린트의 감시 데이터와 현재 콜스택의 일부인 감시 데이터는 하나의 목록으로 통합되는데, 이 목록은 블루프린트 실행이 일시정지될 때마다 현재 데이터로 채워집니다. 이 목록을 사용하면, 변수와 함수 출력을 조사하고, 블루프린트 사이를 쉽게 이동할 수 있습니다. 배열, 세트, 맵, 다른 데이터 구조체를 펼치면, 들어있는 데이터를 빠르고 편리하게 분석해 볼 수 있습니다. 또한 "Node Name" (노드 이름) 열의 항목을 클릭하면 블루프린트의 그 이름 노드로 이동할 수 있으며, "Object Name" (오브젝트 이름) 열의 항목을 클릭하면 해당 특정 오브젝트 인스턴스를 선택할 수 있습니다.

콜 스택

디버깅 세션 도중 사용할 수 있는 Call Stack (콜 스택)은 개념 상 대부분의 C++ 개발 환경에서 찾을 수 있는 콜 스택과 비슷합니다. 콜 스택은 블루프린트와 네이티브 (C++) 코드 사이 실행 흐름을 현재 스택 위에 실행 중인 블루프린트 함수와 함께 표시합니다.

블루프린트 매크로는 콜 스택에 표시되지 않습니다. 대신, 블루프린트 매크로는 그것을 호출한 블루프린트 함수의 일부로 나타납니다.

ActiveBreakpoint.png

위의 블루프린트 함수는 팩토리얼 연산을 반복 수행합니다. 중단점은 함수 끝에 설정했습니다.

중단점에 걸리면, 콜 스택에 현재 작동 중인 함수가 나열되며, 맨 위에 현재 함수부터 시작해서 아래로 호출한 함수까지입니다. 각 줄 항목에 있는 함수 이름은 그 바로 아래 줄에 있는 함수가 호출한 함수라는 뜻입니다. 재귀 (셀프 호출) 함수의 경우, 같은 함수 이름이 연속해서 여러 번 나타날 수 있습니다.

CallStack_FiveFactorial.png

이 콜 스택은 위에 있던 팩토리얼 함수를 다섯 번 재귀 호출하는 것을 보여줍니다. 이 함수는 원래 액터의 메인 블루프린트 그래프에서 호출되어, 차례로 네이티브 (C++) 코드에서 호출된 BeginPlay 이벤트에 반응하고 있습니다.

CallStack.png

콜 스택을 확인하(거나 숨기)려면, > 개발자 툴 서브메뉴에서 선택할 수 있습니다.

실행 추적

실행 추적 (Execution Trace) 스택에는 가장 최근에 실행된 노드가 맨 위로 올라오는 스택 목록이 표시됩니다.

Blueprint Debugging - Execution Trace Stack

디버깅할 때 그래프를 단계 별로 진행하면서 이 목록이 업데이트됩니다.

태그