iOS崩溃报告 - 如何查找崩溃的地方

时间:2013-12-05 09:50:33

标签: ios crash-reports dsym

最后我将应用程序上传到appstore。我也使用Flurry分析,并且在那里捕获了很少的错误。

我尝试附加dSYM文件以使其更具可读性,但我不确定此类日志的哪一部分会更改为人类可读文本。

此处的其他事情:我没有看到指向我的一个类文件(实现)的任何行。

所以我的问题是   - 如何从此类报告中获取更多信息?   - 这是真的,应用程序真的在用户设备上崩溃了吗?或者这样的错误对用户来说是不可见的?   - 该应用程序是否可能没有崩溃,但可能是用户杀死了它的进程?

由于

以下是崩溃报告

Hardware Model:      iPhone3,3
Process:         my-app [560]
Path:            /var/mobile/Applications/3539397F-14A1-4802-A388-1D5070404D98/my id
Identifier:      /my id
Version:         1.3
Code Type:       ARM
Parent Process:  launchd [1]

Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0x70000008
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                     0x34dde5b0 +[Protocol load] + 663
1   UIKit                               0x3471b4a7 0x34699000 + 533671
2   UIKit                               0x346b1abb 0x34699000 + 101051
3   UIKit                               0x347268d7 0x34699000 + 579799
4   QuartzCore                          0x34cdabd9 -[CALayer dealloc] + 1244
5   libdispatch.dylib                   0x3793d4b7 0x3793c000 + 5303
6   libdispatch.dylib                   0x3793edcb -[OS_object release] + 274
7   CoreFoundation                      0x3826af3b +[__NSCFLocale         automaticallyNotifiesObserversForKey:] + 12398
8   CoreFoundation                      0x381ddebd -[__NSDate timeIntervalSinceReferenceDate] + 500
9   CoreFoundation                      0x381ddd49 -[__NSDate timeIntervalSinceReferenceDate] + 128
10  GraphicsServices                    0x3887a2eb 0x38875000 + 21227
11  UIKit                               0x346f0301 0x34699000 + 357121
12  my-app                              0x0012987b -[ASIHTTPRequest setSynchronous:] + 86

Thread 1:
0   libsystem_kernel.dylib              0x3568c648 0x3568b000 + 5704
1   libdispatch.dylib                   0x3793fdf8 -[OS_object _dispose] + 579

Thread 2:
0   libsystem_kernel.dylib              0x3568beb4 0x3568b000 + 3764
1   CoreFoundation                      0x3826c045 +[__NSCFLocale     automaticallyNotifiesObserversForKey:] + 16760
2   CoreFoundation                      0x3826ada3 +[__NSCFLocale  automaticallyNotifiesObserversForKey:] + 11990
3   CoreFoundation                      0x381ddebd -[__NSDate timeIntervalSinceReferenceDate] + 500
4   CoreFoundation                      0x381ddd49 -[__NSDate timeIntervalSinceReferenceDate] + 128
5   WebCore                             0x3689ca75 +[WebScriptObject initialize] + 608
6   libsystem_c.dylib                   0x364f5311 0x364e4000 + 70417

Thread 3:
0   libsystem_kernel.dylib              0x3568beb4 0x3568b000 + 3764
1   CoreFoundation                      0x3826c045 +[__NSCFLocale automaticallyNotifiesObserversForKey:] + 16760
2   CoreFoundation                      0x3826ada3 +[__NSCFLocale automaticallyNotifiesObserversForKey:] + 11990
3   CoreFoundation                      0x381ddebd -[__NSDate timeIntervalSinceReferenceDate] + 500
4   CoreFoundation                      0x381ddd49 -[__NSDate timeIntervalSinceReferenceDate] + 128
5   Foundation                          0x3264cbcd +[NSURLConnection _resourceLoadLoop:] + 308
6   Foundation                          0x326d067d -[NSThread description] + 1096
7   libsystem_c.dylib                   0x364f5311 0x364e4000 + 70417

Thread 4:
0   libsystem_kernel.dylib              0x3568beb4 0x3568b000 + 3764
1   CoreFoundation                      0x3826c045 +[__NSCFLocale  automaticallyNotifiesObserversForKey:] + 16760
2   CoreFoundation                      0x3826ada3 +[__NSCFLocale automaticallyNotifiesObserversForKey:] + 11990
3   CoreFoundation                      0x381ddebd -[__NSDate timeIntervalSinceReferenceDate] + 500
4   CoreFoundation                      0x381ddd49 -[__NSDate timeIntervalSinceReferenceDate] + 128
5   my-app                           0x001275eb +[ASIHTTPRequest runRequests] + 170
6   Foundation                          0x326d067d -[NSThread description] + 1096
7   libsystem_c.dylib                   0x364f5311 0x364e4000 + 70417

Thread 5:
0   libsystem_kernel.dylib              0x3569c594 0x3568b000 + 71060
1   libsystem_c.dylib                   0x364f5311 0x364e4000 + 70417

Thread 6:
0   libsystem_kernel.dylib              0x3568beb4 0x3568b000 + 3764
1   CoreFoundation                      0x3826c045 +[__NSCFLocale   automaticallyNotifiesObserversForKey:] + 16760
2   CoreFoundation                      0x3826ada3 +[__NSCFLocale automaticallyNotifiesObserversForKey:] + 11990
3   CoreFoundation                      0x381ddebd -[__NSDate timeIntervalSinceReferenceDate] + 500
4   CoreFoundation                      0x381ddd49 -[__NSDate timeIntervalSinceReferenceDate] + 128
5   Foundation                          0x3262378f +[NSNotification allocWithZone:] + 334
6   Foundation                          0x326c705d +[NSPropertyListSerialization propertyListWithStream:options:format:error:] + 9132
7   my-app                              0x0013a9ad +[TFURLConnectionOperation _runNetworkThread:] + 140
8   Foundation                          0x326d067d -[NSThread description] + 1096
9   libsystem_c.dylib                   0x364f5311 0x364e4000 + 70417

Thread 7:
0   libsystem_kernel.dylib              0x3569cd98 0x3568b000 + 73112
1   libsystem_c.dylib                   0x364eaa16 0x364e4000 + 27158

Thread 8:
0   libsystem_kernel.dylib              0x3569cd98 0x3568b000 + 73112
1   libsystem_c.dylib                   0x364eaa16 0x364e4000 + 27158

Thread 0 crashed with ARM Thread State:
r0: 0x1fc42250     r1: 0x34b1bee8     r2: 0x2fdf0d60     r3: 0x348a80d5 
r4: 0x70000000     r5: 0x1fc42250     r6: 0x1fc42360     r7: 0x2fdf0e3c 
r8: 0x1ed3c720     r9: 0x0d2c6fba    r10: 0x1fc1b290    r11: 0x00000001 
ip: 0x3b9a7d64     sp: 0x2fdf0db4     lr: 0x3471b84b     pc: 0x34dde5b0 
cpsr: 0x20000030 

2 个答案:

答案 0 :(得分:1)

关于你的问题:

问题1:如何从此类报告中获取更多信息?

答案:

  1. 信号为SIGSEGV,基本上表示分段错误。这种崩溃有几种可能的原因,例如:过度释放的对象,未初始化的指针或直接写入内存的代码。
  2. 崩溃的线程在堆栈跟踪中显示dealloc调用。这暗示了在释放对象时导致崩溃。
  3. 许多后台线程正在运行ASIHTTPRequest的网络操作,堆栈跟踪中的调用类似。
  4. 有很多提及automaticallyNotifiesObserversForKey暗示涉及键值观察。也许有一个观察者注册了一个密钥,观察者已经被解除分配。它更加棘手,因为通知是从后台线程触发的!例如。在后台进行网络连接并使用主线程上的对象进行观察。如果你不确定主线程上的对象是否足够长,那么在这些场景中很容易出现这种崩溃。
  5. 真正奇怪的是,多个后台线程具有几乎相同的堆栈跟踪,每个堆栈帧的内存地址都相同。
  6. 假设:如果您无法重现此问题,可能无法找到原因。我怀疑它与ASIHTTPRequest及其内部键值编码处理或您自己使用它有某种关系。所以我会替换那个库,例如使用AFNetworking或使用iOS提供的普通网络堆栈。此外,如果您使用键值编码,请检查有关多线程安全的代码。

    问题2:这是真的,应用程序真的在用户设备上崩溃了吗?

    是的,您只能通过真正的应用崩溃获得这些报告。

    问题3:或者这样的错误对用户来说是不可见的?

    不,SIGSEGV是您应用的真正崩溃。如果您在代码中捕获异常并仍然生成报告并将其发送,则Invisible将是。但据我所知Flurry不提供此功能,你显然没有实现它,并且崩溃也不是由异常引起的。所以这是不可能的。

    问题4:应用程序是否可能无法崩溃但是用户可能会将其进程终止?

    如果应用程序被杀,Flurry将不会收到崩溃报告。杀戮由iOS和进程内崩溃报告库(这意味着每个第三方崩溃报告服务)触发,永远不会为这些库创建报告。

    附加说明:异常断点(正如其他人建议的那样)对此类崩溃没有帮助,因为它没有因为发生异常而崩溃。

答案 1 :(得分:0)

可以直接在flurry上询问 - crashanalytics@flurry.com?我希望他们能更好地帮助你。

看看你在那里做互联网请求的地方 - 我认为这是在这个地方。

为了更好的测试,我认为您需要找到iPhone3.3版本(因为我知道它是verizon iphone 4)并尝试直接在此设备上调试您的应用程序。