除了google-breakpad,我不知道任何开放的多平台崩溃报告系统。甚至 google-breakpad 也不支持 MinGW,据我所知,您仍然可以从您的应用程序中获取回溯。项目Dr. Mingw提供了很棒的 dll:mgwhelp.dll 和 exchndl.dll。使用您需要:
- 使用调试信息进行编译。请参阅 Mingw 博士的常见问题解答。
- 在您的应用程序二进制文件中包含 mgwhelp.dll 和 exchndl.dll
- 并在应用程序启动时通过显式调用 LoadLibrary("exchndl.dll") 加载 exchndl.dll
例如像这样:
QFile drmingw("exchndl.dll");
if(drmingw.exists())
{// If don't want create reports just delete exchndl.dll from installer
LoadLibrary(L"exchndl.dll");
}
崩溃后,您将在二进制所在的同一目录中找到带有回溯的文件binary_name.RPT 。
我还能做什么?
win32:!win32-msvc*{
# Strip debug symbols.
QMAKE_POST_LINK += objcopy --only-keep-debug bin/${TARGET} bin/${TARGET}.dbg &&
QMAKE_POST_LINK += objcopy --strip-debug bin/${TARGET} &&
QMAKE_POST_LINK += objcopy --add-gnu-debuglink="bin/${TARGET}.dbg" bin/${TARGET}
}
- 每次运行检查 .RPT 文件是否存在并发送或保存在报告目录中。例如,我使用 gist 来收集报告。