Version: 2020.1
언어: 한국어
모바일 개발자 체크리스트
프로파일링

충돌

충돌 발생 시 체크리스트

  • 코드 스트리핑을 비활성화합니다(또한 iOS의 경우 “예외와 함께 느리게”로 설정).
  • 내장된 iOS 플레이어의 크기 최적화 지침에 따라 게임이 iOS의 스트리핑과 충돌하지 않는지 확인합니다.
  • 메모리 부족으로 인한 것이 아닌지 확인(기기를 다시 시작하고 플랫폼에 최대 RAM이 있는 기기를 사용하고 로그 확인)합니다.

Editor.log - 에디터의 경우

디버그 메시지, 경고 및 오류는 모두 콘솔로 이동합니다. 또한 Unity는 상태 보고서(에셋 로드, 모노 초기화, 그래픽스 드라이버 정보)를 콘솔에 출력합니다.

무슨 일이 벌어지고 있는지 알고 싶으면 editor.log 파일을 확인하십시오. 이 파일은 콘솔보다 더 상세한 정보를 제공합니다. 어떤 문제가 발생했는지 알 수 있으며 코딩 세션의 전체 로그를 볼 수 있습니다. 이렇게 하면 Unity 충돌이 발생한 원인을 추적하거나 에셋의 문제를 찾아내는 데 도움이 됩니다.

Unity는 또한 장치에 몇 가지 정보를 출력합니다(iOS 장치의 Android용 로그캣 콘솔 및 Xcode gdb 콘솔).

Android 디버깅

  1. DDMS 또는 ADB 툴을 사용합니다.
  2. 스택트레이스를 지켜봅니다. c++filt(ndk의 일부) 또는 기타 메서드를 사용하여 변환된 함수 호출을 디코딩합니다.
  3. 충돌이 발생한 .so 파일을 확인합니다.
    1. libunity.so - Unity 코드 또는 사용자 코드에서 충돌이 발생했습니다.
    2. libdvm.so - Java 월드의 어딘가에서 Dalvik과 함께 충돌이 발생했습니다. 따라서 Dalvik의 스택트레이스를 찾아야 합니다. JNI 코드 또는 Java와 관련된( AndroidManifest.xml에 대한 가능한 변경 사항 포함) 모든 것을 살펴야 합니다.
    3. libmono.so - Mono 버그이거나 Mono가 허용하지 않는 행동을 수행하고 있습니다.

로그 분해를 통해 어떤 문제가 발생했는지 대략적으로 알아볼 수 없었다면 다음을 수행하십시오. 1. 다음과 같이 Android NDK의 ARM EABI 툴을 사용할 수 있습니다. objdump.exe -S libmono.so >> out.txt. 1. 스택트레이스의 pc 주변 코드를 확인합니다. 1. 새로운 out.txt 파일에서 해당 코드를 일치시켜야 합니다. 1. 스크롤을 올려 충돌이 발생한 메서드의 상황을 파악합니다.

iOS 디버깅

  1. Xcode에는 앱 디버깅을 수행하기 위한 빌트인 툴이 들어 있습니다.
  2. 전체 gdb 스택 - 모든 스레드 역추적
  3. soft-null-check 사용: 개발 빌드 및 스크립트 디버깅을 사용합니다. 이제는 잡히지 않은 null ref 예외가 적절하게 관리되는 호출 스택과 함께 Xcode 콘솔에 인쇄됩니다.
  4. “빠른 스크립트 호출” 및 코드 스트리핑을 해제해야 합니다. 일부 희귀한 .NET 메서드 또는 반사를 사용하여 발생하는 것과 같은 임의의 충돌을 중지시킬 수 있습니다.

전략

  1. 충돌이 발생한 스크립트를 파악하고 장치에서 모노 개발을 사용하여 디버깅해야 합니다.
  2. 충돌이 코드에 없는 것처럼 보일 경우 스택트레이스를 자세하게 살펴보면 어떤 일이 발생했는지 알 수 있습니다. Unity 문제로 인해 충돌이 발생했다고 생각된다면 알려진 문제 트래커를 참조하거나 버그를 제출하십시오.
모바일 개발자 체크리스트
프로파일링