Version: 5.3 (switch to 5.4b)
Чеклист Мобильного Разработчика
Профилирование

Сбои

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

  • Отключить 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, на котором игра вылетела:
  4. libunity.so - вылет в коде Unity или пользовательском
  5. libdvm.so - вылет связан с Java, с Dalvik. Найдите трассировку стека Dalvik, просмотрите ваш JNI код и все что связано с Java (включая возможные ваши изменения в AndroidManifest.xml).
  6. libmono.so - либо баг Mono, либо совершаются действия, трудно совместимые с ней.
  7. Если логи вылета не помогли, вы можете разобрать их чтобы иметь смутное представление о том, что там произошло.
  8. Используйте ARM EABI из Android NDK примерно так: objdump.exe -S libmono.so >> out.txt
  9. Просмотрите код из трассировки стека.
  10. Попробуйте перебрать этот код с out.txt файлом.
  11. Прокрутите вверх для понимания того, что произошло в функции.

Отладка на iOS

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

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

  3. Включите soft-null-check: Включите билд для разработки (флажок development build) и отладку скрипта (флажок script debugging). Теперь не перехваченные null исключения будут выведены в консоль Xcode с соответствующим стеком вызовов.

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

Стратегия

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