我想在设备上看到应用程序堆栈跟踪或崩溃日志。是否有可用于Qt的内置功能?
我们可以通过写入文件或进行设备调试来获取应用程序日志。 但是,当在目标设备上运行应用程序时发生未知/致命错误时,获取堆栈跟踪非常有用。
答案 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 对其进行调试。