我们如何从普通文本数据生成符号崩溃报告?

问题描述

我将xcode 12和ios 13用于ios应用程序。

我在AppDelegate级别捕获了运行时异常,将StackTrace(使用Thread.callStackSymbols)附加到Log文件并以.crash扩展名保存。但是Stacktrace不是人类可读的。我关注了几篇文章,发现我们必须从中生成符号文件,并且该文件应该易于阅读。

不幸的是,我找不到方法去做?有人可以建议如何做的标准方法吗?

我将在此处附加log.crash文件输出内容,以供您参考。

请帮助我解决此问题,非常感谢您的反馈和评论

 Crash Type : signal 
 Summary: OTHER 
 Reason: Signal OTHER(5) was raised 
 Version: 1.0 
 AppInfo: 
  Device: iPad 
  OS Version: iOS 13.5.1 
  CallStack:  
  2   libsystem_platform.dylib            0x00000001ad5b4884 3834105B-0F62-3E9B-A9F7-B9F29A2B7E1B + 34948
  3   libswiftCore.dylib                  0x00000001bad57d70 01A8EE3D-C8DC-396B-89AD-A5F64DF13F80 + 220528
  4   libswiftCore.dylib                  0x00000001bad57234 $ss17_assertionFailure__4file4line5flagss5NeverOs12StaticStringV_A2HSus6UInt32VtF + 468
  5   libswiftCore.dylib                  0x00000001bad35ed0 $ss12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBounds_03wasfgH0ySi_SbtF + 208
  6   libswiftCore.dylib                  0x00000001bad39ac8 $sSayxSicig + 84
  7   test                                0x000000010047fda8 $s13test24ToolOptionsContainerViewC03setdE8MetaData8toolTypeyAA0dL0O_tF + 1188
  8   test                            0x000000010048341c $s13test24ToolOptionsContainerViewC06updatedeG08toolTypeyAA0dJ0O_tF + 188
  9   test                            0x000000010047f2bc $s13test24ToolOptionsContainerViewC5frame8toolType8delegateACSo6CGRectV_AA0dJ0OAA0defG8Delegate_ptcfc + 2852
  10  test                                0x000000010047e788 $s13test24ToolOptionsContainerViewC5frame8toolType8delegateACSo6CGRectV_AA0dJ0OAA0defG8Delegate_ptcfC + 88
  11  test                                0x00000001002d1564 $s13test0bC4ViewC18setUpHeaderToolbar33_DCFA78A12B92B8638AD99354F8879966LLyyF + 12292
  12  test                                0x00000001002ce540 $s13test0bC4ViewC12initSubViews33_DCFA78A12B92B8638AD99354F8879966LLyyF + 32
  13  test                                0x00000001002cd568 $s13test0bC4ViewC5frameACSo6CGRectV_tcfc + 3716
  14  test                                0x00000001002cd644 $s13test0bC4ViewC5frameACSo6CGRectV_tcfcTo + 56
  15  test                                0x000000010023c854 $sSo6UIViewCABycfcTO + 28
  16  test                                0x000000010023c82c $sSo6UIViewCABycfC + 32
  17  test                                0x000000010024d0ac $s13test0bC14ViewControllerC04loadD0yyF + 200
  18  test                                0x000000010024f7e8 $s13test0bC14ViewControllerC04loadD0yyFTo + 32
  19  UIKitCore                           0x00000001b130eee4 BD57BD6E-12B4-3F92-85CA-754932DA499D + 4108004
  20  UIKitCore                           0x00000001b130f5e8 BD57BD6E-12B4-3F92-85CA-754932DA499D + 4109800
  21  UIKitCore                           0x00000001b128dbc0 BD57BD6E-12B4-3F92-85CA-754932DA499D + 3578816
  22  UIKitCore                           0x00000001b12363d0 BD57BD6E-12B4-3F92-85CA-754932DA499D + 3220432
  23  UIKitCore                           0x00000001b1232654 BD57BD6E-12B4-3F92-85CA-754932DA499D + 3204692
  24  UIKitCore                           0x00000001b195bb64 BD57BD6E-12B4-3F92-85CA-754932DA499D + 10713956
  25  UIKitCore                           0x00000001b194b50c BD57BD6E-12B4-3F92-85CA-754932DA499D + 10646796
  26  UIKitCore                           0x00000001b197b9f0 BD57BD6E-12B4-3F92-85CA-754932DA499D + 10844656
  27  CoreFoundation                      0x00000001ad82906c 50CF3336-313F-3A7D-9048-CB1ED8EC3368 + 688236
  28  CoreFoundation                      0x00000001ad823f60 50CF3336-313F-3A7D-9048-CB1ED8EC3368 + 667488
  29  CoreFoundation                      0x00000001ad8243dc 50CF3336-313F-3A7D-9048-CB1ED8EC3368 + 668636
  30  CoreFoundation                      0x00000001ad823ce8 CFRunLoopRunSpecific + 424
  31  GraphicsServices                    0x00000001b796e38c GSEventRunModal + 160
  32  UIKitCore                           0x00000001b1952444 UIApplicationMain + 1932
  33  test                       0x000000010039d00c main + 88
  34  libdyld.dylib                       0x00000001ad6ab8f0 3D6D64B4-CB2B-3CC4-A7E9-02774DF7AE74 + 6384

解决方法

在链接下面尝试,它在某种程度上起作用。但行号丢失。

https://github.com/GDXRepo/CallStackParser

但是CwlDemangle有一些编译错误,请用下面的文件替换。

https://github.com/mattgallagher/CwlDemangle/blob/master/CwlDemangle/CwlDemangle.swift

我们可以通过以下方式获得callStackSymbols

var callStackSymbols = Thread.callStackSymbols

let callStackSymbols = exteption.callStackSymbols

并将callStackSymbols传递给classAndMethodForStackSymbol(callStackSymbol)

然后它将返回解码的字符串。