Version: 2017.2
Чеклист Мобильного Разработчика
Профилирование

Сбои

Контрольный список для сбоев

  • Отключить code stripping (и установить “slow with exceptions” для iOS)
  • Follow the instructions on Optimizing the Size of the Built iOS Player (iphone-playerSizeOptimization) to make sure your game does not crash with stripping on iOS.
  • Убедитесь, что хватает памяти (используйте устройство с максимальной RAM для платформы, перезагрузите его, просмотрите логи)

Editor.log - в редакторе

Сообщения отладки, предупреждения и ошибки отображаются в консоли. Unity также отправляет в консоль отчеты о состоянии - загрузка ассетов, инициализация моно, данные графического драйвера.

Если вы пытаетесь понять что происходит, посмотрите editor.log. Здесь вы получите полную картинку, а не фрагмент консоли. Вы можете пытаться понять что происходит и смотреть все логи сессии кодинга. Это поможет вам отследить причину падения в Unity или понять, что не так с вашими ассетами.

Unity prints some things on the devices as well; Logcat console for Android and Xcode gdb console on iOS devices

Отладка на Android

  1. Использовать DDMS или ADB инструмент.
  2. Просматривайте трассировку стека (Android 3 или выше). Используйте c++filt (часть ndk_) или другие методы, например http://slush.warosu.org/c++filtjs, чтобы декодировать искаженные вызовы функции
  3. Просмотрите файл .so, на котором игра вылетела:
    1. libunity.so - the crash is in the Unity code or the user code
    2. libdvm.so - the crash is in the Java world, somewhere with Dalvik. So find Dalvik’s stacktrace, look at your JNI code or anything Java-related (including your possible changes to the AndroidManifest.xml).
    3. libmono.so - either a Mono bug or you’re doing something Mono strongly dislikes
  4. Если логи вылета не помогли, вы можете разобрать их чтобы иметь смутное представление о том, что там произошло.
    1. use ARM EABI tools from the Android NDK like this: objdump.exe -S libmono.so >> out.txt
    2. Look at the code around pc from the stacktrace.
    3. try to match that code within the fresh out.txt file.
    4. Scroll up to understand what is happening in the function it occurs in.

Отладка на iOS

  1. Xcode имеет встроенные инструменты. Причем в Xcode4 GUI для дебага более приятный, нежели в Xcode3.

  2. Полный gdb стек - поток трассировки

  3. Enable soft-null-check: Enable development build and script debugging. Now uncaught null ref exceptions will be printed to the Xcode console with the appropriate managed call stack.

  4. Попробуйте включить “fast script call” и отключить зачистку кода (code stripping). Это поможет устранить некоторые случайные крэши (например те, которые вызваны использованием устаревших .Net функций)

Стратегия

  1. Попробуйте выяснить, какой скрипт вызывает сбой и отладьте его используя mono develop на устройстве.
  2. Если вы думаете, что сбой не в вашем коде, обратите внимание на трессировку трека, там может быть подсказка о том что произошло. Пришлите нам копию, будем смотреть.
Чеклист Мобильного Разработчика
Профилирование