Lista de Verificación para Desarrolladores en Móviles
Profiling

Caídas

Lista de verificación para fallos que hacen caer la ejecución de juego

  • Desabilitar el code stripping (y para iOS, colocar “slow with exceptions”)
  • Siga las instrucciones acerca de Optimizar el Tamaño del Reproductor iOS Construido (iphone-playerSizeOptimization) para asegurarse que su juego no crash con stripping en iOS.
  • Verificar si la falla es debida a un agotamiento de memoria (reinicia tu dispositivo, úsalo con la máxima capacidad de RAM para la plataforma, y asegúrate de ver los logs)

Editor.log - en el editor

Todos los mensajes, advertencias y errores de depuración aparecerán en la consola. Unity también imprime reportes de estado a la consola: carga de assets, inicialización de Mono e información del controlador gráfico.

Si estás intentando entender lo que ha sucedido, echa un vistazo a editor.log. Ahí obtendrás el panorama completo, no sólo una porción de consola. Puedes intentar entender lo que está pasando, y vigilar el log completo de su sesión de programación. Esto te ayudará a localizar lo que ha causado la caída de Unity, o averiguar lo que está mal en tus assets.

Unity imprime algunas cosas en los dispositivos también; la consola Logcat para Android y la consola Xcode gdb en dispositivos iOS.

Depuración en Android

  1. Utiliza las herramientas ADB o DDMS
  2. Observa los mensajes de stacktrace (Android 3 o posterior). Usa c++filt (viene junto con el NDK) u otros métodos como http://slush.warosu.org/c++filtjs para decodificar las llamadas de función que aparecen de forma incompleta.
  3. Mirar si la caída está ocurriendo al interior de los archivos:
    1. libunity.so - la caída ocurrió en el código de Unity o en el del usuario
    2. libdvm.so - la caida ocurrió en el código en Java, en alguna parte dentro de Dalvik. Encuentra el registro de errores de Dalvik, revisa en el codigo JNI o en lo que esté relacionado con Java (incluyendo posibles modificaciones al AndroidManifest.xml).
    3. libmono.so - podría ser un bug en Mono, o que estás haciendo algo que no le agrada a Mono
  4. Si el registro de fallas no te ayuda, puedes desensamblar archivos binarios para obtener un entendimiento aproximado de lo que está sucediendo.
    1. Utiliza las herramientas de ARM EABI en el Android NDK de esta forma: objdump.exe -S libmono.so >> out.txt
    2. Mirar los archivos del PC que son mencionados en el stacktrace
  5. intente que coincida con el código dentro del archivo fresco out.txt
  6. Desplácese hacia arriba para entender lo que está sucediendo en la función en la que ocurre.

Depuración en iOS

  1. Xcode tiene herramientas incorporadas. Xcode 4 tiene buenas interfaces gráficas para depurar caídas, Xcode 3 tiene menos.

  2. Full gdb stack - thread backtrace all

  3. Enable soft-null-check: Permite la depuración de la construcción en desarrollo y script. Ahora las excepciones ref null no atrapadas serán impresas a la consola Xcode con el call stack managed apropiado.

  4. Try turning the “fast script call” and code stripping off. It may stop some random crashes, like those caused by using some rare .Net functions or reflection.

Estrategia

  1. Intenta averiguar en cuál script ocurrió la caída, y depúralo utilizando Mono Develop en el dispositivo.
  2. Si la caída parece no estar ocurriendo en tu código, revisa más detenidamente el stacktrace, ahí debe haber una pista de lo que ocurre. Haz una copia, envíanosla a nosotros y le echaremos un vistazo.
Lista de Verificación para Desarrolladores en Móviles
Profiling