使用来自苹果的崩溃报告查找崩溃的根源

Posted

技术标签:

【中文标题】使用来自苹果的崩溃报告查找崩溃的根源【英文标题】:Finding root of crash with crash report from apple 【发布时间】:2018-07-26 16:25:25 【问题描述】:

我有一个应用程序被苹果拒绝,因为它为他们崩溃了,我似乎无法确定崩溃实际发生的位置以进一步调试(到目前为止我也无法复制崩溃)。

使用 https://developer.apple.com/library/archive/technotes/tn2151/_index.html 和 How to symbolicate crash report from Apple received in .txt format not .crash format 我能够部分地象征他们发送给我的崩溃报告,这给了我一行:

0 应用程序 0x000000010461ad04 闭包 #2 中的闭包 #1 ViewController.getLocations(lat:lng:) + 470276 (ViewController.swift:0)

在查看 ViewController.getLocations 方法时,我看不到任何可能导致崩溃的东西,但我对 + 470276 有点困惑这是什么意思?

完整的回溯:

Thread 0 Crashed:
0   App                 0x000000010461ad04 closure #2 in closure #1 in ViewController.getTolls(lat:lng:) + 470276 (ViewController.swift:0)
1   App                 0x00000001045cae70 thunk for @escaping @callee_guaranteed () -> () + 142960 (MyVehiclesViewController.swift:0)
2   libdispatch.dylib               0x00000001836ecaa0 0x1836eb000 + 6816
3   libdispatch.dylib               0x00000001836eca60 0x1836eb000 + 6752
4   libdispatch.dylib               0x00000001836f965c 0x1836eb000 + 58972
5   CoreFoundation                  0x0000000183da3070 0x183cb5000 + 974960
6   CoreFoundation                  0x0000000183da0bc8 0x183cb5000 + 965576
7   CoreFoundation                  0x0000000183cc0da8 0x183cb5000 + 48552
8   GraphicsServices                0x0000000185ca6020 0x185c9b000 + 45088
9   UIKit                           0x000000018dce0758 0x18d9c3000 + 3266392
10  App                 0x00000001045ae924 main + 26916 (BaseViewController.swift:24)
11  libdyld.dylib                   0x0000000183751fc0 0x183751000 + 4032

【问题讨论】:

【参考方案1】:

在我看来,MyVehiclesViewController 中的转义闭包调用似乎没有以某种方式实现。回溯中的“+ 47276”也是给定内存地址的偏移量。一个完整的符号应该给出行号。

关于如何完全符号化的堆栈溢出,this one 很不错。

【讨论】:

以上是关于使用来自苹果的崩溃报告查找崩溃的根源的主要内容,如果未能解决你的问题,请参考以下文章

苹果手机怎么查看崩溃日志

iphone崩溃分析一定准确吗

苹果手机崩溃1次是啥意思

苹果手机崩溃日志怎么看

iphone系统崩溃

如何在 XCode Organizer 上查看应用程序崩溃?