Unity 검색

Backtrace로 게임 오류 보고 간소화

2020년 6월 11일 테크놀로지 | 5 분 소요
공유

Is this article helpful for you?

Thank you for your feedback!

This blog was created in partnership with a third-party Verified Solutions partner to share information that may be useful to Unity users. These professional-caliber tools, plug-ins, SDKs, and other technical solutions have been reviewed and verified by Unity engineers for compatibility with Unity.

새로운 기능 개발, 게임 테스트 및 출시 기간 동안 발생하는 크래시와 오류 보고서 분석은 많은 시간이 소요됩니다. 발생한 문제와 해당 문제의 중요성을 파악하기 위해서는 프로그래머와 문제를 발견한 플레이어 간에 많은 정보를 주고받아야 합니다. 유니티의 검증된 솔루션 파트너사인 Backtrace의 오류 관리 플랫폼을 이용하면 크래시 및 예외 보고서의 수집과 분석이 자동화되어 작업에 소요되는 시간이 절반으로 단축되므로 게임플레이에 방해가 되는 문제를 더 신속하게 해결할 수 있습니다.

지금부터 Backtrace를 사용하여 크래시와 오류를 발견, 분석 및 해결하는 방법을 살펴보겠습니다.

문제 파악

문제의 우선 순위를 결정하기 위해 프로그래머나 관리자는 어떤 조건 하에서 어떤 컴포넌트에 문제가 발생했는지 가장 먼저 파악해야 합니다. 따라서 환경 변수, 시스템 정보, 커스텀 메타데이터, 로그 항목, 첨부된 스크린샷 및 동영상과 같은 상황별 정보를 담은 풀스택 추적을 사용하여 크래시나 예외를 자동으로 파악할 수 있어야 합니다. 가장 진단하기 까다로운 문제를 파악하려면 실행 중이던 모든 스레드의 상태, 로드된 모듈, 사용 기기의 주요 드라이버 버전과 같은 세부 정보를 파악하는 등 시스템 런타임을 보다 세밀하게 분석해야 합니다.

Backtrace의 캡처 라이브러리는 PS4, Xbox One, Nintendo Switch와 같은 콘솔, Stadia와 같은 스트리밍 서비스, PC나 Mac과 같은 데스크톱, iOS나 Android를 탑재한 모바일 디바이스, 그리고 WebGL을 탑재한 웹 플랫폼을 비롯한 다양한 플랫폼의 게임에 임베드할 수 있어 까다로운 진단 문제를 해결할 수 있습니다. Backtrace는 또한 Multiplay와 같은 백 엔드 플랫폼과 Docker Containers, Kubernetes 같은 기술도 지원하여 이러한 플랫폼에서도 크래시 정보를 수집합니다.

문제 중요도 분석

크래시의 우선 순위를 지정하는 가장 효율적인 방법은 발생 빈도에 따라 분류하는 것이며, 이 외에도 다음과 같은 요소를 고려해야 합니다.

  • 문제 해결이 불가능한 크래시도 있습니다. 예를 들어 오래된 그래픽 드라이버로 인해 발생한 PC 크래시나, 익스플로잇(exploit) 또는 바이러스 검사 소프트웨어 때문에 발생한 게임 크래시가 여기에 해당합니다.
  • 이미 조사 중인 문제의 경우 이를 알릴 수 있는 수단이 필요합니다. 예를 들어, 버그 추적 시스템으로 연결되는 링크를 활용할 수 있습니다.
  • 사용자에게 미치는 영향이 미미한 크래시 유형도 있습니다. 메인 창이 종료된 후에 발생하는 크래시가 여기에 해당됩니다.
  • 비교적 큰 영향을 미칠 수 있는 크래시가 있습니다. 회귀(regression)나 서버 크래시가 여기에 해당됩니다.

Backtrace는 가장 중요한 문제를 더 효율적으로 파악할 수 있도록 다음과 같은 툴을 제공합니다.

  • 상태별 보기 및 관리 – Triage 보기에서 시작(Open), 진행 중(In Progress), 숨김(Muted), 해결 완료(Resolved)와 같은 필터 단축키를 사용하여 상태를 확인할 수 있습니다.
  • 회귀 감지 – 프로그래머는 “x.y.z 이상 버전에서 오류가 발견되기 전까지는 해결된 것으로 간주”와 같은 기준을 설정하여 문제가 다시 발생하면 해결 절차를 다시 개시할 수 있습니다.
  • 협업 및 통합 – 사용자 할당, 문제 추적 시스템에 연결, 코멘트, 태그를 이용하여 조사 중인 문제의 상태를 파악할 수 있습니다.
  • 크래시 태그 – 정규식 규칙을 적용하여 크래시에 렌더링, 네트워킹, 물리 등 하나 이상 해당되는 범주의 태그를 지정할 수 있습니다.
  • 플레임 그래프 – 문제가 발생한 지점을 전반적으로 살펴볼 수 있는 시각적 툴입니다. 다양한 크래시의 규모를 시각화할 수 있습니다.

해결 방법

정교한 디버깅 분석 및 보고 작업을 수행하기 위해 게임 개발자는 다음과 같은 요소를 고려해야 합니다.

  • 오류가 발생하는 주소에 설정되어 있는 비트 패턴
  • 프로세스 가동 시간의 분포 상태
  • 스냅샷에서 메모리 사용량이 가장 높은 작업
  • 그룹이 정규식과 일치할 때 속성의 고유 값
  • 그룹별로 특정 기간에 해당하는 추적 대상의 발생 빈도를 보여주는 히스토그램

이 모든 작업이 가능하려면 인터럽트부터 메모리 사용량, 개방형 기술자(descriptor)에 이르기까지 모든 프로세스 통계가 공개되어야 합니다. 개발자는 자체 속성을 자유롭게 추가할 수 있어야 하고, 시스템은 다양한 차원에 대한 집계와 분석 작업을 유연하게 처리해야 합니다.

압축 가능한 대규모 데이터 세트, 그리고 전체 스캔이 필요하며 소규모 하위 열을 구체화하는 쿼리가 있는 분석 워크로드에는 열 기반 데이터베이스를 활용하는 것이 보다 효율적입니다. Backtrace 시스템은 분석에 적합한 열 기반 데이터베이스로 설계되었으며, 몇몇 세계 최대 규모의 게임 스튜디오에서는 이 시스템을 활용하여 강력한 폴드 연산을 수행하고 값 분포를 파악하는 동시에 실시간 피드백을 받고 있습니다.

Backtrace는 보다 실행 가능한 정보를 제공하기 위해 명령어 세트, 언어에 관한 기술 자료와 더불어 함수의 정적 분석 규칙을 정의하는 규칙 시스템을 제공합니다. 기술 자료는 정렬, 권한, 스토리지 요구 사항, 플래그 등 기반 명령어 세트에 대한 제약 조건으로 구성되어 있으며, 다음과 같은 기능을 제공합니다.

  • 할당자 데이터 구조 및 포인터의 포렌식 분석을 통한 힙 손상 파악
  • 모든 포인터를 진단하여 부실 포인터를 감지하고 힙 및 유형 분석을 수행하여 불일치 감지
  • ROP 체인을 감지하기 위해 오류가 발생한 영역과 관련된 실행 가능한 코드 및 코드 경로의 메모리를 스캔하여 악성 코드 감지

게임 개발 라이프 사이클에 Backtrace를 통합하면 크래시 및 이벤트 해결에 소요되는 시간을 절반으로 단축할 뿐 아니라 까다로운 문제도 감지하고 해결할 수 있습니다. Backtrace는 유니티의 검증을 받은 솔루션 파트너입니다. 따라서 Backtrace의 SDK는 Unity 에디터의 최신 버전에 맞게 최적화되었으며, Unity 개발자에게 편리한 환경을 제공합니다. 여기를 클릭하여 무료 체험판을 신청하거나 https://backtrace.io/for/unity/에서 Backtrace 솔루션에 대한 자세한 내용을 알아보세요.

2020년 6월 11일 테크놀로지 | 5 분 소요

Is this article helpful for you?

Thank you for your feedback!