qt - 如何在 Qt 中检索堆栈跟踪或设备崩溃日志?

标签 qt qt4

我想在设备上查看应用程序堆栈跟踪或崩溃日志。 Qt 是否有可用的内置功能?

我们可以通过写入文件或进行设备调试来获取应用日志。 但是,当在目标设备上运行应用程序时发生未知/ fatal error 时,获取堆栈跟踪很有用。

最佳答案

对此没有内置解决方案,但是(假设您使用的是 C++),google-breakpad提供了一个解决方案。文档有点欠缺,而且它无法处理 Qt 对事件处理程序中抛出的异常的(非)处理,但它可以解决大部分繁重的工作。

回答其他答案中的问题:

Gyp 应该位于 src\tools\gyp\gyp.bat。您将运行如下内容:

src\tools\gyp\gyp.bat src\client\windows\breakpad_client.gyp --include=breakpad_include.gypi -Dwin_debug_RuntimeLibrary=3 -Dwin_release_RuntimeLibrary=2 --generator-output=..\build\google_breakpad

breakpad_include.gypi 文件设置了 gyp 应该使用的特殊配置。我的看起来像这样:

{
  'target_defaults': {
    'configurations': {
      'Common_Base': {
        'msvs_settings': {
          'VCCLCompilerTool': {
            'TreatWChar_tAsBuiltInType': '0',
          },
        },
      },
    },
  },
}

这解决了 Qt 和 VS 处理 WChar 的方式上的差异。其他设置指定要使用的运行时库。这必须与 Qt 使用的相匹配。

关于qt - 如何在 Qt 中检索堆栈跟踪或设备崩溃日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6940841/

相关文章:

Qt生成info.plist文件

c++ - glBlitFramebuffer 与 QOpenGLFunctions

c++ - 多个 Qt 小部件描绘不同的 OpenSceneGraph 节点而没有性能损失

c++ - Qt Qvariantlist转换成javascript数组不成功

qt - 视频无法连续播放

c++ - 用3D+2D图形重绘QGLWidget

QT4 如何模糊 QPixmap 图像?

c++ - QT C++ 前向声明问题?

c++ - 在QFileSystemModel中找到第n个文件/文件夹

c++ - Qt中如何避免 "Same signal, different slots"引起的冲突?