Возможно, я полностью неправильно понимаю, как использовать Google Breakpad API, и в таком случае я открыт для комментариев/предложений/грубых замечаний. Я пытаюсь вызвать следующую функцию С++:
bool WriteMinidumpForException(EXCEPTION_POINTERS* exinfo);
У меня есть ссылка на std::exception
:
try {
return QApplication::notify(receiver, event);
} catch (std::exception &ex) {
eh_.WriteMinidumpForException(?????);
// ... do some more stuff and ultimately kill this process
}
(eh_
is a google_breakpad::ExceptionHandler
.)
Что мне указать в ?????
Предыстория: Причина, по которой это необходимо (я думаю), заключается в том, что Qt не поддерживает исключение, генерируемое в обработчике событий. Оно не будет распространяться корректно, поэтому мини-дамп, создаваемый Breakpad, совершенно бесполезен, поскольку фактический контекст исключения был утерян. Вместо этого вы должны перехватывать все исключения и обрабатывать их в переопределении QApplication::notify()
, что я и пытаюсь сделать. В случае исключения я хочу немедленно написать свой мини-дамп для этого исключения (что звучит так, как будто WriteMinidumpForException
подойдет), а затем уведомить пользователя и выйти из приложения. Но я не уверен, что передать как параметр EXCEPTION_POINTERS*
.