gpt4 book ai didi

qt - Qt应用程序的多平台崩溃报告系统

转载 作者:行者123 更新时间:2023-12-04 09:00:46 25 4
gpt4 key购买 nike

我正在创建一个多平台 Qt 应用程序,我希望崩溃报告系统能够在用户计算机发生崩溃时生成崩溃报告。稍后,我应该能够查看包含崩溃报告中所有调试信息的堆栈跟踪。我看过google-breakpad。

但是要使用它,我似乎需要为 Windows 切换到 MSVC。现在我在 Windows 上使用 MinGW,我需要花费大量的时间和精力来使用 MSVC 编译所有不同的库。有什么方法可以使用 MinGW 并且仍然可以使用 google-breakpad?或者是否有其他替代方案可以在多平台上工作并在 Windows 上支持 mingw?

最佳答案

除了google-breakpad,我不知道任何开放的多平台崩溃报告系统。即使 google-breakpad 不支持 MinGW,据我所知,您仍然可以从您的应用程序中获得回溯。项目Dr. Mingw提供很棒的 dll:mgwhelp.dll 和 exchndl.dll。使用你需要:

  • 用调试信息编译。请参阅 Dr. 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。

    我还做什么?
  • 在 Release模式下 strip 调试符号。

  • 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 收集报告。
  • 关于qt - Qt应用程序的多平台崩溃报告系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14640700/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com