我开始通过 BugSense 从我的 iOS 应用程序接收崩溃报告。我在我的应用程序中包含了调试符号,并获取了有关错误的信息,例如。 “* -[NSMutableArray objectAtIndex:]:索引 0 超出空数组的边界”以及堆栈跟踪,例如:

Full Stacktrace

0   CoreFoundation  __exceptionPreprocess   114
1   libobjc.A.dylib objc_exception_throw    24
2   CoreFoundation  -[__NSArrayM objectAtIndex:]    184
3   Myapp   Myapp   738167
4   UIKit   -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:]    662
5   UIKit   -[UITableView _userSelectRowAtPendingSelectionIndexPath:]   130
6   Foundation  __NSFireDelayedPerform  368
7   CoreFoundation  __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__   14
8   CoreFoundation  __CFRunLoopDoTimer  850
9   CoreFoundation  __CFRunLoopRun  1088
10  CoreFoundation  CFRunLoopRunSpecific    230
11  CoreFoundation  CFRunLoopRunInMode  58
12  GraphicsServices    GSEventRunModal 114
13  GraphicsServices    GSEventRun  62
14  UIKit   -[UIApplication _run]   404
15  UIKit   UIApplicationMain   670
16  Myap p  Myapp   11901
17  Myapp   Myapp

但是,我想对报告进行符号化,以便我可以准确指出代码中的错误所在。如何从 Bugsense 获取报告数据并执行此操作?有没有办法从 BugSense 下载“常规”崩溃报告并使用它,或者它们提供的数据是否足以以某种方式工作?我知道报告来自哪个版本的应用程序,因此我知道要对哪些二进制文件进行符号化。

最佳答案

BugSense 的工作原理是获取设备上的符号并将它们发布到服务器上,其格式类似于您在崩溃日志中看到的格式。 BugSense 获取异常堆栈跟踪,当它找不到时,崩溃的线程堆栈跟踪。由于各种原因,这并不总是完美的。

您发布的堆栈跟踪是部分符号化的。看起来 BugSense 在获取您自己的代码中的符号时遇到了问题。

如果您遵循了这封信的使用指南,则可能是框架本身的失败。 atos 应该可以帮助您发现代码中的确切方法调用。

免责声明:我为 BugSense-iOS.framework 编写代码。

关于ios - 如何符号化来自 BugSense 的 iOS 崩溃报告?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7675317/

10-15 08:27