2012-07-05 9 views
6

Estoy usando google-breakpad. Este es un programa de informe de errores que se ejecuta en segundo plano para informar fallas de otro proceso.¿Por qué Google Breakpad no maneja todos los bloqueos? ¿Cómo puedo depurar estos casos?

Funciona en casi cualquier situación.

Sin embargo, ocasionalmente no se produce un bloqueo. No hay informe ni archivo de volcado. Simplemente se cuelga. La última pista del bloqueo es un mensaje de evento de Windows.

¿Cómo puedo solucionar estos bloqueos? ¿Qué causaría que Breakpad no manejara el bloqueo? ¿Qué métodos puedo usar para depurar la situación?

+0

¿Podrían ser estas excepciones de SEH? ¿Son cosas como desbordamientos de pila o violaciones de acceso? –

+0

Supongo que podría estar relacionado con desbordamientos de pila. Breakpad ha estado detectando violaciones de acceso bien. – Hybrid

+1

Breakpad dice que usa la función SetUnhandledExceptionFilter() (windows). No estoy seguro de que la función de devolución de llamada para SetUnhandledExceptionFilter se llame o no antes de que el proceso finalice en esta situación. – Hybrid

Respuesta

10

La biblioteca de tiempo de ejecución Visual C++ C/C++ eliminará el conjunto de ganchos con SetUnhandledExceptionFilter en determinadas circunstancias; por ejemplo, cuando detecta un desbordamiento de búfer u otro problema de seguridad.

This Microsoft feedback page enumera cómo detener este comportamiento para la mayoría de los casos, pero indica que no es posible para el caso de desbordamiento de búfer sin presentar problemas de seguridad.

+0

No puedo ver la página de comentarios de Microsoft. ¿Hay algún enlace nuevo o algo que pueda ver? –

+4

Parece que la página se ha ido 404. No recuerdo exactamente qué hay en ella, pero pruebe la documentación de MSDN para _set_abort_behavior y _set_invalid_parameter_handler. –

Cuestiones relacionadas