2010-07-25 12 views
5

Tengo un programa que se ejecuta correctamente en el dispositivo en la configuración de depuración, pero falla como una versión. Alguien tiene esta experiencia, y ¿cómo la soluciono?la aplicación se ejecuta como depuración, pero se bloquea como la versión

Thx

+0

Debería ver mi respuesta a esta pregunta y le dará (sorta) la respuesta a lo que está buscando: http://stackoverflow.com/questions/3261557/why-is-windows-phone- 7-emulator-tan-lento-comparado-a-um-iphone-os-emulator/3261644 # 3261644 –

+0

Lo he visto, pero no sirve de nada. Ambas versiones que menciono se ejecutan en el dispositivo, no en el simulador. Todo es perfecto en el simulador. –

+0

Estoy llegando a este punto: ambos son diferentes y es por eso que está fallando. –

Respuesta

1

Mensaje

Algunos

pistas!

¿Qué quiere decir con "error"? ¿Choque? ¿Colgar? Destinado para el uso de memoria? ¿Cuáles son los síntomas del fracaso? ¿Tienes retroceder? ¿Tiene algo en su código que se comporta diferente en depuración frente a versión? ¿Alguna travesura de tipo #ifdef DEBUG? asserts con efectos secundarios? ¿Te metiste con la configuración del compilador? ¿Tienes C++? ¿Montaje?

veo un indicio de una pista en los comentarios; acceso ilegal a una variable. Lo más probable es que esto se deba a que el optimizador reutiliza una ranura de pila más rápidamente en la versión que en la depuración. Lo cual, en general, se reduce a un problema de liberación excesiva.

Incluso al construir para su lanzamiento, puede activar la detección de zombies.

Además, ¿ha realizado una compilación y analiza y solucionó los problemas que esto indica?

15

me encontré con el mismo problema - App funcionó bien en el simulador y el dispositivo en modo de depuración, pero tampoco en modo de lanzamiento (que instalaría, pero sólo mostrar la pantalla de bienvenida)

  • Xcode 4.3.2
  • iOS destino de despliegue de 4,3

me seguía viendo respuestas en StackOverflow que dijo que este era un problema de gestión de memoria, pero eso no tiene ningún sentido para mí ya que la versión de depuración funcionó perfectamente bien cuando se carga a mi iPhone 4S. También verifiqué las Configuraciones de compilación para ver qué difería entre los dos modos, y salté la única diferencia que importaba al final: la optimización del compilador.

En configuración de generación -> debajo de la manzana LLVM compilador de generación de código 3.1 - Nivel> Optimización, cambiar el ajuste del valor predeterminado más rápido, más pequeño [-Os] a Ninguno [-O0] lanzamiento. Solucionado mi problema.

Encontré esa solución en esta publicación de blog: http://www.mindjuice.net/2011/11/30/how-to-fix-an-app-that-crashes-in-release-but-not-debug/.

El Apple Documentation ayuda, pero no explica por qué hacer sólo las correcciones opuestos cosas:

optimizaciones de código de cualquier tipo en consecuencia más lentos tiempos de construcción debido al trabajo extra involucrado en el proceso de optimización. Si su código está cambiando, como ocurre durante el ciclo de desarrollo, no desea que las optimizaciones estén habilitadas. No obstante, a medida que se acerca al final de su ciclo de desarrollo, la configuración de lanzamiento de compilación puede darle una indicación del tamaño de su producto terminado, por lo que la opción Más rápida, Más pequeña es adecuada.

Ninguno: El compilador no intenta optimizar el código. Utilice esta opción durante el desarrollo cuando esté enfocado en resolver errores lógicos y necesite un tiempo de compilación rápido. No use esta opción para enviar su ejecutable.

Más rápido, Más pequeño: El compilador realiza todas las optimizaciones que normalmente no aumentan el tamaño del código. Esta es la opción preferida para el código de envío porque le da a su ejecutable una menor huella de memoria.

+0

La documentación que citó dice 'No use esta opción [Ninguna] para enviar su ejecutable'. ¿Pero es eso lo que hiciste? –

Cuestiones relacionadas