Почему google breakpad не справляется со всеми сбоями? Как я могу отладить эти случаи?

Я использую google-breakpad. Это программа сообщения об ошибках, которая работает в фоновом режиме, чтобы сообщить о сбоях другого процесса.

Он работает практически в любой ситуации.

Однако иногда он не может поймать сбой. Нет ни отчета, ни файла дампа. Он просто падает. Последним признаком сбоя является сообщение о событии Windows.

Как я могу отладить эти сбои? Что может привести к тому, что Breakpad не справится со сбоем? Какие методы я могу использовать для отладки ситуации?


person Hybrid    schedule 05.07.2012    source источник
comment
Могут ли это быть исключения SEH? Это такие вещи, как переполнение стека или нарушение прав доступа?   -  person Doug T.    schedule 05.07.2012
comment
Я предполагаю, что это может быть связано с переполнением стека. Breakpad хорошо ловит нарушения прав доступа.   -  person Hybrid    schedule 05.07.2012
comment
Breakpad говорит, что использует функцию SetUnhandledExceptionFilter() (windows). Я не уверен, что функция обратного вызова для SetUnhandledExceptionFilter вызывается или нет до завершения процесса в этой ситуации.   -  person Hybrid    schedule 05.07.2012
comment
Думаю, нет. хотя я не уверен..   -  person Hybrid    schedule 06.07.2012


Ответы (1)


Библиотека времени выполнения Visual C++ C/C++ удалит перехватчик, установленный с помощью SetUnhandledExceptionFilter, при определенных обстоятельствах; например, когда он обнаруживает переполнение буфера или другую проблему безопасности.

На этой странице отзывов Microsoft перечислены способы устранения такого поведения для большинства случаев, но заявляет, что это невозможно в случае переполнения буфера без создания проблем с безопасностью.

person Baffe Boyois    schedule 05.07.2012
comment
Я не вижу эту страницу отзывов Microsoft - есть ли новая ссылка или что-то еще, на что я могу посмотреть? - person Lynden Shields; 13.01.2014
comment
Страница, кажется, перешла на 404. Я точно не помню, что на ней, но попробуйте документацию MSDN для _set_abort_behavior и _set_invalid_parameter_handler. - person Baffe Boyois; 15.01.2014