我可能完全误解了如何使用 Google Breakpad API,如果是这样的话,我愿意接受评论/建议/粗鲁的言论。我正在尝试调用以下 C++ 函数:
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_
是一个google_breakpad::ExceptionHandler
。)
我在里面放什么??????
背景:这是必要的(我认为)的原因是 Qt 不支持在事件处理程序中引发的异常。它不会正确传播,因此 Breakpad 生成的 minidump 完全没有用,因为异常的实际上下文已经丢失。相反,您必须捕获所有异常并在覆盖中处理它们QApplication::notify()
,这就是我想要做的。在出现异常的情况下,我想立即为该异常编写我的 minidump(这听起来像是WriteMinidumpForException
会做的),然后通知用户并退出应用程序。但我不确定将什么作为EXCEPTION_POINTERS*
参数传递。