使用来自苹果的崩溃报告查找崩溃的根源
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 很不错。
【讨论】:
以上是关于使用来自苹果的崩溃报告查找崩溃的根源的主要内容,如果未能解决你的问题,请参考以下文章