TECHARTNOMAD | TECHARTFLOWIO.COM

TECH.ART.FLOW.IO

[소식] Rider 2024.2 의 언리얼 게임 개발 업데이트.

jplee 2024. 9. 9. 16:08

Unreal Debugging Improvements in Rider 2024.2

August 12, 2024

Rider 2024.2에는 네이티브 디버거가 대폭 개선되어 디버깅 중 네이티브 코드를 평가하는 경험이 크게 향상되었습니다. 성능 개선, 최적화된 코드 처리 개선, 스마트 포인터 및 스트링 유형에 대한 연산자 평가 지원 등이 있습니다. 이러한 변경 사항은 JetBrains Rider를 사용한 일상적인 언리얼 게임 디버깅에 큰 변화를 가져올 것입니다. 몇 가지 세부 사항을 살펴보겠습니다.

 

콜스택에서 블루프린트 보기

특히 콜스택에 익명의 메모리 주소만 표시되는 경우 코드가 호출되는 위치를 정확히 파악하기가 까다로울 수 있습니다. 다행히 Rider는이러한 메모리 주소를 블루프린트 프레임으로 해석하고 코드가 호출되는 블루프린트를 표시하여 도움을 줄 수 있습니다. 이 기능은 2024.1에 처음 등장했지만 새 릴리스에서 몇 가지 업데이트가 이루어졌습니다. Rider가 코드가 어떻게 사용되고 있는지 알려주면 정말 유용합니다!

스크린샷에서 필터 드롭다운 메뉴에 다른 옵션이 있다는 것을 알 수 있습니다. 언리얼 엔진에서 C++ 프레임 표시 옵션을 사용하면 엔진에서프레임을 표시하거나숨길 수 있으므로 엔진의 방대한 호출 스택을 무시하고 코드에 집중할 수 있습니다.

Evaluation improvements

Rider 2024.2의 가장 중요한 업데이트는 디버거의 평가 기능이 개선된 것입니다. 네이티브 코드 평가와 관련하여 가장 시급한 문제를 다수 해결했으며, 이러한 변경 사항은 Rider 디버거를 사용할 때 삶의 질에 큰 영향을 미칠 것입니다. 자세히 살펴봅시다!
첫째, 이제 Rider는 STL 및 언리얼 스마트 포인터, 컬렉션 컨테이너, 스트링의 연산자를 올바르게 평가합니다. 즉, 언리얼 스마트 포인터 TSharedPtr 또는 TObjectPtr이 주어졌을 때 이제 화살표 연산자 -> 를 사용하여 기본 포인터의 멤버에 액세스하거나 * 연산자를 사용하여 오브젝트를 역참조할 수 있습니다. ! ,! = 및 == 연산자를 사용할 수도 있습니다.

또한 [ ] 연산자를 사용하여 TArray와 같은 배열형 컨테이너의 요소에 액세스할 수도 있습니다.

Rider는 이제 == 및 ! = 연산자를 지원하여 문자열 리터럴을 std ::string, std ::wstring 및 FString과 같은 문자열 유형과 비교할 수 있습니다.

또한 이러한 모든 연산자는 평가 및 감시뿐만 아니라조건부 중단점의 조건으로도 사용할 수 있습니다.

또 다른 큰 삶의 질 향상은 이제 watch 에 추가 작업이 훨씬 더 안정적으로 더 많은 시나리오에서 작동한다는 것입니다. 디버거에서 오브젝트를 볼 때는 일반적으로Natvis 프레임워크에서 제공하는 사용자 친화적인 커스텀 오브젝트 뷰를 보게 됩니다. 예를 들어 디버거는 STL 또는 언리얼 컨테이너의 내부 값을 표시하는 대신 컨테이너 내부의 항목을 표시하여 사용자가 예상하는 데이터를 보여줄 수 있습니다. 이 커스텀 뷰는 이러한 합성 오브젝트 멤버 중 하나에  custom watch 를 추가하는 것이 매우 복잡하다는 것을 의미하지만, 이제 Rider 2024.2는 Watch를 추가하기 위해 우클릭하면 올바른 표현식을 생성합니다.

이번 릴리스에서는최적화된 코드에 대한 평가 기능도 개선되었습니다. 컴파일러는 방대한 데이터 덩어리를 최적화할 수 있기 때문에 디버깅 중에 현재 컨텍스트를 파악하기가 더 어려워질 수 있습니다. 하지만 컴파일러가 항상 전체 오브젝트를 최적화하는 것은 아니며 사용되지 않는 데이터만 최적화합니다. 이제 Rider는 부분 데이터가 있는 오브젝트를 표시하여 디버깅에 도움이 되는 훨씬 더 많은 컨텍스트를 제공할 수 있습니다. 또한 데이터나 개체를 사용할 수 없을 때 가끔씩 표시되던 난해한 내부 오류 메시지가 개체의 전체 또는 일부를 표시할 수 없는 이유를 설명하는 보다 친숙한 텍스트로 대체되었습니다.

Modules view

Rider 2024.2는기본 디버거에 모듈 뷰를 지원합니다. 이 기능은 .NET용 Rider 2023.3에서 처음 도입되었으며, 이제 언리얼 게임에서도 사용할 수 있습니다. 모듈 뷰는 디버그 툴 창의 새 탭으로, 로드된 모든. dll 또는 . so 파일 목록과 경로에 대한 세부 정보, 모듈에 로드된 심볼이 있는지 여부가 표시됩니다.

모듈을 마우스 오른쪽 버튼으로 클릭하고 모듈의 이름이나 경로를 복사하거나 디스크의 모듈 위치로 이동할 수 있습니다.

Data breakpoints

또한 이번 릴리스에서는 데이터 중단점을 대폭 개선하여 반응성과 안정성이 훨씬 더 향상되었습니다. 이제 Natvis 파일에서 생성된 항목을 포함하여이전보다 더 많은 시나리오에서 작동하며, 문제가 있는 경우 유용한 오류 메시지를 표시합니다. 아직 데이터 중단점에 익숙하지 않다면설명서를 참조하세요. 데이터 중단점은 정수나 포인터와 같은 값이 변경될 때 실행을 일시 중단하는 훌륭한 기능으로, 복잡한 동작을 디버깅하는 데 매우 강력한 방법이 될 수 있습니다.

Roadmap

Rider 2024.2의 페인트칠은 거의 마르지 않았고, 로드맵에 대한 이야기는 이미 시작되었습니다! 네이티브 디버거와 언리얼 디버깅 전반에 걸쳐 향후 몇 번의 릴리스에 걸쳐 더 많은 계획이 있습니다. 특히 성능 최적화, 프로세스 분리 지원 개선, 코드 평가 개선에 더 많은 노력을 기울이고 있습니다.
또한 Rider가 이미 .NET에서 제공하는 것처럼 기본 디버거에 스텝타임 시각화 기능을 추가하고자 합니다. Rider는 디버깅 중에 인라인 힌트를 표시하여 두 중단점 사이에서 코드를 실행하는 데 걸리는 시간 또는 한 줄의 코드를 단계적으로 넘어갈 때 걸리는 시간을 알려줍니다. 이를 통해 코드 섹션이 예상보다 오래 걸리는 경우를 파악하는 데 도움이 될 수 있으며, 추가 조사가 필요한 성능 문제를 나타낼 수도 있습니다.
.NET 디버거에서 제공하고자 하는 또 다른 기능은컬렉션 시각화 도구로, 개체 컬렉션을 검사, 정렬 및 필터링할 수 있는 풍부한 인터페이스를 제공합니다.
마지막으로 게임 콘솔에 대한 디버깅 지원도 큰 진전을 보이고 있으며, 향후 릴리스에서 이를 공유할 수 있기를 기대합니다.
Rider 2024.2의 네이티브 디버거에는 많은 개선 사항이 있으므로 업그레이드하여 프로젝트에서 직접 사용해 보시기 바랍니다.

 

Rider의 게임 개발에 대한 자세한 내용은Rider의 AI 어시스턴트가 코드베이스 이해, 상용구 처리, API 및 프레임워크 학습에 어떻게 도움이 되는지 설명하는 이 라이브스트림 녹화 영상을 확인해보세요.