공부중

[UE] 디버깅 할때 FString 값을 볼 수 없는 경우 본문

Programing/UnrealEngine

[UE] 디버깅 할때 FString 값을 볼 수 없는 경우

곤란 2022. 9. 25. 14:24
반응형

어느날 갑자기 디버깅 할때 FString 값을 볼수 없게된 경우가 발생 했었다.

진짜 되던게 안되던것이라 뭐지? 하고 불편했던 기억이 있었다.

첨에는 DebugGame이 아니어서 그랬나 했지만 Shipping에서도 디버깅을 돌릴때 값을 본 기억이 있었기에

뭔가 문제가 있을 것이라 생각하고 찾아보았다.

https://forums.unrealengine.com/t/how-to-watch-value-of-fstring-on-debug-mode/287743

 

How to watch value of FString on debug mode?

in VS2013 how to watch value of FString on debug mode? Char or TCHAR shows ok. but FString does not show . is it a visual Studio specific function or Unreal specific? someone from IRC said me to install “Engine\Extras\VisualStudioDebugging\ue4.natvis”

forums.unrealengine.com

관련 정보 찾은 내용은 위의 글이다.

 

먼저 테스트로 만든 프로젝트는 아래와 같다.

간단한 3인칭 기본 프로젝트에서 GameMode에 FString 값을 넣고 그냥 Compare하는 코드를 넣었다.

UCLASS(minimalapi)
class AtesttttGameMode : public AGameModeBase
{
	GENERATED_BODY()

public:
	AtesttttGameMode();


protected:
	FString _TestString = TEXT("HelloTestString");

};

//===========================================================

AtesttttGameMode::AtesttttGameMode()
{
	// set default pawn class to our Blueprinted character
	static ConstructorHelpers::FClassFinder<APawn> PlayerPawnBPClass(TEXT("/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter"));
	if (PlayerPawnBPClass.Class != NULL)
	{
		DefaultPawnClass = PlayerPawnBPClass.Class;

		if (0 == _TestString.Compare(TEXT("HelloTestString")))
		{
			if (GEngine)
			{
				GEngine->AddOnScreenDebugMessage(-1, 10, FColor::Red, TEXT("Same String"));
			}
		}
	}
}

작성한 코드는 간단히 살펴볼것이라 위와 같이 간단하게 되어있고 증상은 아래와 같다.

 

??? 그래서 _TestString안에 뭐 들어있는데?

그럼 조사식에서 내부를 볼수 있지 않을까?

....?

뭐가 들어있는지 볼 수가 없었다.

아 메모리 주소값 찔러서 찾아보면 다 나온다고!!!!

물론 메모리 주소 직접 찍어서 볼순있다. 근데 일일히 이러는건 너무 불편하다.

 

찾아본 결과 아래와 같은 내용을 찾을 수 있었다.

솔루션 탐색기에 보면 Visualizers 폴더에 아무것도 없다.

 

<언리얼 설치 경로>/Engine\Extras\VisualStudioDebugging\Unreal.natvis
ex) C:\Program Files\Epic Games\UE_5.0\Engine\Extras\VisualStudioDebugging\Unreal.natvis

위의 파일이 하나 있는데 이것을 저곳에 추가해 주도록 하자

 

저 파일이 뭐고 어떻게 동작하고 어떤식으로 볼수 있게 해주는지는 나는 모른다

아무튼 저 파일을 통해서 언리얼 프로젝트를 VisualStudio에서 디버깅을 할때 값을 볼수 있게끔 해주는 파일로만 알고 있다.

관련 자세한 내용은 아래의 링크로

https://learn.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects?view=vs-2022 

 

Create custom views of C++ objects - Visual Studio (Windows)

Use the Natvis framework to customize the way that Visual Studio displays native types in the debugger

learn.microsoft.com

 

어? 저는 솔루션탐색기를 보니까 Visualizers/Unreal.natvis가 이미 존재하는데요? 이런 분들도 있을것이다.

그러면 속성을 보고 파일의 경로가 올바른지 실제로 경로에 해당 파일이 존재하는지 확인을 해야 한다.

경로가 틀리면 못찾은거라 안보일수도 있다.

 

디버깅을 종료하지 않고도 파일 추가가 가능한데 파일을 추가하고 나면 아래와 같이 값을 볼 수 있다.

 

 

 

반응형