2009-07-10 40 views
9

Estoy trabajando en una aplicación Cocoa dirigida a Leopard y superior, y estoy pensando en agregarle un reportero de bloque (me gustaría pensar que mi aplicación no se bloqueará, pero consigamos real aquí). Tengo algunas preguntas principalmente conceptuales antes de realmente comenzar.Aplicación Crash Reporter for Cocoa

1) ¿Cómo funciona esto conceptualmente, saber cuándo hay un colapso y sacar a un reportero? ¿Tengo un daemon funcionando en busca de un bloqueo, o espero hasta que mi aplicación se lance la próxima vez para informar?

2) ¿Se puede hacer esto en Cocoa? ¿O tendría que sumergirme en Carbon o IOKit o algo así?

3) ¿Es esto una buena idea? Mac OS X ya tiene incorporado un informe de fallos, pero como desarrollador no puedo ver los registros de fallos. No creo que mi aplicación se bloquee a menudo, francamente, pero simplemente no quiero ser ingenuo sino este tipo de cosas.

¿Cuáles son sus pensamientos y opiniones al respecto?

+1

¿Alguien tiene ganas de responder a esta publicación en 2013? Todas las respuestas están desactualizadas, pero la pregunta es más que relevante ... –

Respuesta

4

He tenido mucho éxito con UKCrashReporter. El código es directo y fácil de modificar para que coincida con el L & F de su aplicación.

PLCrashReporter parece interesante, sin embargo.

Me mantendría alejado de Smart Crash Reporter solo porque a muchos usuarios (por derecho) no les gusta que su aplicación inyecte código en lugares inesperados y me parece un enfoque frágil (quizás peligroso en una aplicación lanzada).

+0

¿Te importaría actualizar tu respuesta para 2013? No me sorprendería que su nueva respuesta sea totalmente diferente. –

1

He visto algunas aplicaciones usar Smart Crash Reporter o tal vez alguna variante de la misma. Cuando su aplicación falle, aparecerá el cuadro de diálogo habitual de bloqueo de Apple con un botón adicional que dice "Enviar a Apple y a usted"

1

Me gustaría alejarme de Smart Crash Reporter por el único motivo que tiene un mal sabor para muchos usuarios, y es una buena manera de obtener mala prensa para su aplicación (merecida o no) PLCrashReporter o UKCrashReporter http://zathras.de/angelweb/sourcecode.htm, le darán algunas ideas sobre qué hacer y cómo hacerlo de manera que no se inyecte en otros espacio de código

2

Otros respondieron bien la pregunta y señalaron un buen código de ejemplo.

Codificarlo usted mismo es bastante simple. La estrategia general es:

  • captura señales apropiadas
  • lanzamiento de una aplicación reportero accidente separada que vive dentro de paquete de la aplicación
  • la aplicación reportero accidente continuación, se encuentra la última entrada de registro de bloqueo para su aplicación y lo envía al usted a través de cualquier método que desee (POST, correo electrónico, etc.)
1

Otra opción es Google Breakpad. Tiene un contenedor Cocoa framework y es compatible con el servidor Socorro de Mozilla. Es utilizado por Firefox, y el framework Cocoa se usa en las versiones beta actuales de Camino. La integración del lado del cliente es bastante fácil, pero nunca he visto lo que se necesita para ejecutar una instancia del servidor de Socorro.

2

también he enrollado mi propia: SFBCrashReporter

hay un pequeño post on my blog al respecto.

+1

Lo he usado en mi aplicación y estaba bastante contento con él. La versión actual está diseñada para aplicaciones habilitadas para GC, por lo que su uso para aplicaciones que no son de GC requiere una pequeña cantidad de ajustes. Probé UKCrashReporter también, pero me gustó esto mejor. – hasseg

0

Estoy usando ILCrashReporter y funciona muy bien. El método está basado en correo electrónico, por lo que funciona bien con Fogbugz.

+0

ILCrashReporter no está trabajando en el leopardo de las nieves ... ¿alguna pista? – Devarshi