본문 바로가기

Unreal Engine

How to check Unreal global variables in Visual Studio's Watch window

도입

언리얼 프로젝트를 비주얼 스튜디오로 디버깅 할 때 전역변수 내용을 확인하고자 Watch 창에 변수명을 그대로 입력하면 정상적으로 표시가 되지 않는다. 언리얼 엔진은 여러 모듈로 이루어져 있고 각 모듈은 하나의 라이브러리가 되며 전역변수들은 이러한 라이브러리 내에 존재하기 때문이다.

 

 

준비

전역변수를 Watch 창에서 확인하기 위해서는, 우선 솔루션 환경 구성이 디버깅하고자 하는 환경과 일치하는 것이 중요한데, 환경 구성에 따라 코드 최적화 수준이 다르기 때문에 최적화된 경우 디버깅 정보가 정상적으로 표시되지 않을 수 있다.

 

다른 환경 구성을 사용하더라도 디버깅하고자 하는 모듈의 Build.cs 에서 코드 최적화 수준을 변경하는 것도 방법이 될 수 있겠으나, 일반적으로 디버깅을 하는 입장에서는 모든 변수의 내용을 볼 수 있는 것을 선호하기 때문에 모든 코드 최적화가 비활성화 되는 Debug Editor 환경으로 구동하는 것이 적합하다.

 

Debug Editor 환경은 소스 버전의 엔진을 사용할 때 구성 가능한 환경이므로 에픽 런처를 통해 다운로드 할 수 있는 바이너리 버전의 엔진을 사용할 때는 해당 구성을 사용할 수 없다.

 

해결

디버깅을 할 수 있는 적절한 코드 최적화 수준을 갖춘 상태라면 전역변수를 확인하기 위해서는 Watch 창에 다음과 같이 입력하면 된다.

  • {,,[module]} expression
  • module!expression

 

예를 들어 솔루션 구성을 Debug Editor 에 Win64 로 설정한 상태에서 GEngine 을 디버깅하고자 하는 경우, GEngine 이 속한 DLL 은 UnrealEditor-Engine-Win64.dll 이다. 따라서 GEngine 을 Watch 창에 입력하는 경우

  • {,,UnrealEditor-Engine-Win64-Debug}GEngine
  • UnrealEditor-Engine-Win64-Debug!GEngine

의 두 가지 방식 중 하나를 이용하여 변수의 상세한 내용을 확인할 수 있다.

 

 

추가

참고로 특정 변수가 속한 모듈을 확인하는 방법은 해당 변수 선언부를 확인하고 포함된 모듈을 순서대로 파악하면 된다.

GEngine 의 경우 Engine\Source\Runtime\Engine\Classes\Engine 폴더 내에 위치하며, 해당 코드는 1차적으로 Engine 모듈에 위치하며 이 모듈을 다시 UnrealClient, UnrealEditor, UnrealGame, UnrealServer 에서 사용하는 것을 알 수 있다.

 

 

따라서 언리얼 엔진 솔루션을 Development Editor 로 빌드하는 경우에는 UnrealEditor-Engine.dll 로, Debug Editor 의 Win64 로 빌드하는 경우에는 UnrealEditor-Engine-Win64-Debug.dll 이라는 라이브러리로 결과물이 생성되므로, 디버깅 시 이를 참고하여 모듈이름을 입력하면 된다. (언리얼 엔진 4 의 경우 위의 UnrealClient, UnrealEditor, UnrealGame, UnrealServer 모듈이 각각 UE4Client, UE4Editor, UE4Game, UE4Server 로 되어 있음을 참고)

 

 

참고