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

时间:2011-08-04 11:44:54

标签: qt qt4

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

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

2 个答案:

答案 0 :(得分:2)

没有内置的解决方案,但(假设您使用的是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正在使用的相匹配。

答案 1 :(得分:1)

您尚未指定哪个操作系统,但在Linux上您可以通过此命令创建核心文件

  

设置ulimit -c unlimited

将此文件放入.bashrc文件或适当的位置,每当发生崩溃时,您将获得应用程序的核心转储。

然后您可以使用 gdb 对其进行调试。