2011-12-13 11 views
15

Hello Stack Overflow!Incluyendo datos personalizados en volcados de emergencia de iOS

Una pregunta simple para usted: ¿es posible incrustar datos de error personalizados en los volcados de emergencia de iOS generados automáticamente que obtengo de mis usuarios cuando mi aplicación se bloqueó en su dispositivo?

Por ejemplo: Mi base de datos SQlite no funcionará por alguna razón (digamos, el archivo de la base de datos está dañado) .. No puedo recuperarme de este error, así que tiro una excepción e incrusto en la excepción el error detallado sqlite mensaje. El problema es que el volcado de la aplicación no contendrá el mensaje de excepción, por lo que no es fácil saber bajo qué condiciones se bloqueó la aplicación.

¿Alguien sabe una manera de poner cosas en el informe de volcado de bloqueo? ¿O tiene alguna otra forma recomendada de informar fallas de producción al desarrollador?

Gracias!

Respuesta

29

No, no puede agregar sus propios datos a los informes de fallos. Tampoco es posible acceder a informes de fallos generados por iOS automáticamente debido a la zona de pruebas.

Así que mi sugerencia es la siguiente:

  1. Para registrar sus propios datos, utilice Cocoalumberjack. Es mucho más rápido que NSLog u otros marcos de trabajo de registro y tiene la opción de registrar sus mensajes en un archivo. Ahora, cuando se produce una excepción, o cuando lo desee, inicie sesión en un archivo. Pero si su aplicación se bloquea justo en un punto donde agrega algo en un archivo de registro, lo más probable es que falte, ya que la aplicación se bloqueó en el mismo momento.

    Por lo tanto, es bastante imposible capturar con seguridad la instrucción SQL exacta. Pero el informe de fallos debería proporcionarle información suficiente para comprender lo que está sucediendo, además de lo que ha iniciado antes. P.ej. podría registrar la cadena de búsqueda utilizada en el modo SQL antes de que se ejecute el SQL.

    En general, intente no registrar demasiado.

  2. Para la captura de informe de accidente que debiera nada más que una solución basada en el marco de código abierto PLCrashReporter, que pueden safely accidentes de captura, también cuando aplicación ya está en la App Store! No se recomienda capturar excepciones, marque this article para ver por qué.

    iTunes Connect le ofrece también ver algunos informes de fallos, pero demora hasta 2 semanas para ver algunos, pero de lejos no todos, como p. señalado por el Camera+ developers. Entonces es mejor que uses tu propia solución.

    PLCrashReporter le enviará informes de fallos formateados Apple estándar, listos para la simbolización, para que sepa dónde ocurre el bloqueo en su código, incluidos los números de línea.

    Algunas soluciones basadas en PLCrashReporter son:

    • QuincyKit: servidor php cliente de código abierto +, agrupación básica accidente, symbolication pueden ser automatizados desde tu Mac (soy el programador de esta)
    • HockeyApp: Servicio pagado, utiliza el cliente QuincyKit, agrupación de bloqueo avanzada, la simbolización está completamente hecha en el servidor (estoy de los desarrolladores de esto)
    • Bugsense: servicio gratuito, se anunció como función premium
    • AppBlade: servicio de pago, symbolication desconocida
    • Crashlytics: beta privada, características desconocidas, su solución parece estar basado en PLCrashReporter
  3. Las soluciones propuestas o bien permitir el envío de los datos de forma automática en el siguiente inicio o pidiendo el usuario si acepta enviar.

+0

Corrección leve: BugSense actualmente proporciona simbolización en el dispositivo. –

+1

Gracias Nick. Eso es nuevo, ya que hoy supongo :) Entonces, ¿eso significa sin números de línea y necesita los símbolos en el binario de la aplicación? – Kerni

+0

Exactamente a la derecha :) La simbolización se hizo disponible cuando asumí el desarrollo de iOS en BugSense, por lo que ha estado allí por un tiempo. No funciona a la perfección y faltan números de línea e información de archivo. Recientemente descubrí que algunas compilaciones simbolizan incluso algunas opciones de "pelado" y estoy tratando de descubrir por qué eso es ... –

Cuestiones relacionadas