关注

如何查找iOS与tvOS崩溃日志中的符号?

问题

  • iOS/tvOS崩溃日志中找不到任何符号。

原因

应用崩溃后可以找到崩溃日志但找不到符号,原因是dSYMs没有载入。

解决方案

当函数名未被符号化时:

    0 <my_games_name> 0x0123d88c 0xa3000 + 18458764
1 <my_games_name> 0x0165a650 0xa3000 + 22771280
2 <my_games_name> 0x010fbbac 0xa3000 + 17140652
3 <my_games_name> 0x0182b774 0xa3000 + 24676212
...
27 <my_games_name> 0x012408d4 0xa3000 + 18471124

您可以使用Xcode内建的系统,使用.dSYM文件自动转译崩溃日志。当.dSYM文件对spotlight可见时(例如在开发用机上),该系统会在崩溃日志打开时自动进行转译。如果您想在其他机器上检视崩溃日志,则您需要这些.dSYM文件。您还可以利用Unity Cloud Build来达成这一点。如果您打算了解.dSYM文件在未部署机器上的自动symbolicate原理,请点击这里参阅symbollicate Unity Cloud Build。

在iTunes Connect中,如果您的应用上传了.dSYM文件,崩溃日志同样会被symbolised。我们推荐您使用此种方式,因为您只能使用构建游戏时创建的.dSYM文件来symbolicate。.dSYM文件是在Xcode应用程序构建准备阶段生成的。如需了解更多关于.dSYM文件以及如何生成,去哪里找到这些文件,请参阅这里

或者您也可以使用Xcode lldb命令使用崩溃报告中显示的地址来获得函数的名称,操作步骤如下:

  1. 禁用stripping并构建应用
  2. 在Main.mm中设置一个断点
  3. 在Xcode控制台中使用如下命令:image lookup - address
    (lldb) image lookup --address 0x012408d4

您应牢记一点,二进制数据的载入偏移可能有所不同,您可以在回调栈中观测到这一点(偏移是0xa3000)。在这种情况下,您应减去原有的偏移并在当前debug绘画中添加这一偏移量。

如果您遇到任何与系统库有关的问题,不管是您的代码还是Unity相关的代码您都可以围绕该问题进行检查。

   0   libsystem_platform.dylib 0x000000019726ce5c 0x197268000 + 20060
   1   libsystem_c.dylib 0x00000001971253e0 0x197124000 + 5088
   2   MyNewPlugin 0x000000010003ac70 0x10002c000 + 60528
   3   UIKit 0x000000018d5f90b0 0x18d5b0000 + 299184

除了使用应用程序的dSYM,您还可以使用崩溃设备上对应的iOS版本提供的框架,例如iOS 8.1.1版本的UIKit symbol。

xcrun atos -arch arm64 -o ~/Library/Developer/Xcode/iOS DeviceSupport/8.1.1 (12B436)/Symbols/System/Library/Frameworks/UIKit.framework/UIKit -l 0x18d5b0000 0x000000018d5f90b0

更多关于命令行 symbolication的信息可以在此查阅

 

如果您想对iOS应用程序的崩溃报告有一个初步了解,可以参阅此文。如果您需要symbolicate Unity Cloud Build构建生成的崩溃日志,可以参阅此文

 

注意:Unity Support同样需要您的程序构建.dSYM文件来symbolicate您的请求。如果您直接向Support发送symbolicate处理后的文件会更方便一些。

 
更多信息
  • 更多关于Instrument的信息点击这里
  • 更多关于dSYM的信息点击这里
  • 更多关于profiling与symbol的信息点击这里
  • 更多关于profiling的信息点击这里
  • 更多关于symbolicate Unity Cloud Build崩溃日志的信息点击这里
  • 更多关于命令行symbolication的信息点击这里这里这里

属性

本文适用于Unity 4.6.0f1及以上版本,XCode 6及以上版本,iOS 6.0及以上版本。

这篇文章有帮助吗?
0 人中有 0 人觉得有帮助
还有其它问题?提交请求

0 评论

登录写评论。