디버깅

Jaemyeong Lee·2024년 12월 8일
0

입문자를 위한 UE5

목록 보기
9/60

1. 블루프린트 디버깅 개념 이해

Breakpoint 설정 (F9 단축키)

  • Breakpoint는 디버깅을 위해 실행을 멈출 특정 위치를 지정하는 장치입니다.
  • F9를 누르면 블루프린트 노드에 빨간 점이 표시됩니다. 실행 중 해당 지점에 도달하면 실행이 중지됩니다.
  • 정지된 상태에서 변수 값, 함수 호출 순서 등을 확인할 수 있습니다.

2. 블루프린트 흐름과 콜 스택 이해

Fun A, Fun B, Fun C의 흐름

  • Fun A:

    • 시작 시 "Begin A" 로그를 출력하고 Fun B를 호출합니다.
    • Fun B 실행 후 "End A" 로그를 출력합니다.
  • Fun B:

    • "Begin B" 로그를 출력하고 Fun C를 호출합니다.
    • Fun C 실행 후 "End B" 로그를 출력합니다.
  • Fun C:

    • "Begin C"와 "End C" 로그만 출력합니다.

레벨 블루프린트의 메인 흐름

  • Event BeginPlay:
    • 처음 "BeginPlay Begin" 로그를 출력합니다.
    • 이후 Fun A를 호출합니다.
    • Fun A가 끝난 후 "BeginPlay End" 로그를 출력합니다.

실행 결과 분석 (출력 로그 순서)

  • 실행 결과 로그 순서:

    BeginPlay End
    End A
    End B
    End C
    Begin C
    Begin B
    Begin A
    BeginPlay Begin

    로그 출력 순서를 통해 호출 흐름이 거꾸로 쌓여있음을 알 수 있습니다. 이는 함수가 호출되면서 스택(Stack) 자료구조처럼 동작하기 때문입니다.


3. Blueprint Debugger를 활용한 디버깅

Blueprint Debugger 메뉴 접근

  • 상단 메뉴에서 Debug -> Blueprint Debugger를 선택합니다.
  • 실행된 블루프린트의 함수 호출 순서를 콜 스택(Call Stack)을 통해 확인할 수 있습니다.

콜 스택(Call Stack)

  • DevMap -> FunA -> FunB -> FunC 순으로 호출된 상태를 확인합니다.
  • 콜 스택은 함수 호출의 흐름과 실행 위치를 명확히 보여줍니다.

4. 디버깅 단축키

F10과 F11의 차이점

  • F10 (Step Over):

    • 현재 노드에서 다음 노드로 이동하지만, 함수 내부로 들어가지는 않습니다.
    • 큰 그림을 볼 때 적합합니다.
  • F11 (Step Into):

    • 현재 함수 노드의 내부로 들어가 디버깅을 진행합니다.
    • 함수 내부의 세부 사항을 관찰할 때 적합합니다.

5. 디버깅 예제: 산술 연산 문제

문제 상황

  • 코드에서 HP / MaxHP를 계산했을 때 82%가 아닌 0%가 출력되었습니다.
  • 이는 C/C++ 산술 연산에서 int와 int 연산 결과가 int로 반환되기 때문입니다. 0.82는 소수점 이하를 버리고 0으로 반환됩니다.

해결 방법

  1. MaxHP를 float로 캐스팅:

    • HP / (float)MaxHP로 연산하여 실수 결과를 반환합니다.
  2. 언리얼 블루프린트에서도 적용:

    • 블루프린트에서 intfloat로 변환하여 동일한 오류를 방지합니다.

6. 디버깅 흐름 설명

  • Breakpoint를 설정하고 실행하면 특정 위치에서 실행이 멈추고 현재 상태를 확인할 수 있습니다.
  • 커서를 특정 노드나 반환값 위에 올리면 현재 변수 값, 연산 결과 등을 확인할 수 있습니다.
  • 이러한 방식으로 논리 오류를 찾아 수정할 수 있습니다.

예제

profile
李家네_공부방

0개의 댓글