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

Сбои

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

  • Отключить 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. Если вы думаете, что сбой не в вашем коде, обратите внимание на трессировку трека, там может быть подсказка о том что произошло. Пришлите нам копию, будем смотреть.
Чеклист Мобильного Разработчика
Профилирование
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961