【问题标题】:iOS Crash Report - how to find crashing placeiOS Crash Report - 如何找到崩溃的地方
【发布时间】:2013-12-05 09:50:33
【问题描述】:

最后我将应用上传到应用商店。我也在使用 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 

【问题讨论】:

  • 向项目添加异常断点。阅读此链接blog.manbolo.com/2012/01/23/xcode-tips-1-break-on-exceptions
  • 不要使用ASIHTTPRequest!图书馆很旧,造成了问题。连开发者都说:Please note that I am no longer working on this library - you may want to consider using something else for new projects. :)allseeing-i.com/ASIHTTPRequest
  • 嗨,你解决了吗?我有一个看起来非常相似的崩溃报告。谢谢。
  • 是的,我解决了这个问题,这是由于在模态视图控制器上请求关闭,并以错误的顺序推送其他视图控制器引起的。一旦我从旧版本中获得它,我将提交导致崩溃的一段代码。

标签: ios crash-reports dsym


【解决方案1】:

关于您的问题:

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

答案:

  1. 信号为SIGSEGV,基本上表示分段错误。这种崩溃有几个可能的原因,例如一个过度释放的对象、一个未初始化的指针或直接写入内存的代码。
  2. 崩溃线程在堆栈跟踪中显示dealloc 调用。这暗示崩溃是在对象被释放时引起的。
  3. 许多后台线程正在使用ASIHTTPRequest 运行网络操作,在堆栈跟踪中具有类似的调用。
  4. 有很多提到automaticallyNotifiesObserversForKey,这暗示着涉及到Key-Value-Observing。也许有一个观察者注册到一个键,并且观察者已经被释放。更棘手的是,通知是从后台线程触发的!例如。在后台进行联网并使用主线程上的对象进行观察。如果您不能确保主线程上的对象存在足够长的时间,那么在这些情况下很容易发生此类崩溃。
  5. 多个后台线程具有几乎相同的堆栈跟踪,甚至各个堆栈帧的内存地址都相同,这真的很奇怪。

假设:如果您无法重现此问题,您可能找不到原因。我怀疑它与ASIHTTPRequest 及其内部键值编码处理或您自己的使用有关。所以我会替换那个库,例如使用 AFNetworking 或使用 iOS 提供的普通网络堆栈。此外,如果您使用的是键值编码,请检查有关多线程安全的代码。

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

是的,您只会在实际应用崩溃时获得这些报告。

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

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

问题 4: 是否有可能应用程序没有崩溃但用户可能终止了它的进程?

如果应用程序被终止,您将不会收到 Flurry 的崩溃报告。 Kills 由 iOS 触发,进程内崩溃报告库(这意味着每个 3rd 方崩溃报告服务)永远无法为这些库创建报告。

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

【讨论】:

  • 感谢您的回答,不,我有很多地方要检查。在我的应用程序中,我有一个假设是“主要”观察者——它是 TabBarController 的子类,但它并不总是可见的(例如,当我以模态方式显示视图控制器时)。我的 TabBarController 子类的一般目的是在收到某些通知时提供不同的流程,例如在选项卡 4 上显示某些屏幕等。现在我怀疑该控制器可能已被释放但仍注册为观察者
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多