iPhone 崩溃报告

Posted

技术标签:

【中文标题】iPhone 崩溃报告【英文标题】:iPhone Crash Report 【发布时间】:2010-04-07 02:42:31 【问题描述】:

对于英国的某些用户,我的 iPhone 应用程序崩溃了。我尝试使用英国时区及其区域格式,但无法在我的 iPhone 或模拟器上重现崩溃。最终得到了一份崩溃报告,我能够象征它。但是,我很难理解结果。似乎线程 0 在系统库中崩溃了。我的应用程序的唯一调用是 main.m。

线程 4 有一些熟悉的东西。它在:

我的应用程序 0x00004cca -[TocTableController parser:didEndElement:namespaceURI:qualifiedName:] (TocTableController.m:1369)

代码是:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];

它在执行 alloc/init 时崩溃了?内存不足,仅在英国?任何人都知道可能是什么原因?提前致谢!

Date/Time:       2010-04-06 21:41:17.629 +0100
OS Version:      iPhone OS 3.1.3 (7E18)
Report Version:  104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread:  0

Thread 0 Crashed:
0   libSystem.B.dylib              0x00090b2c __kill + 8
1   libSystem.B.dylib              0x00090b1a kill + 4
2   libSystem.B.dylib              0x00090b0e raise + 10
3   libSystem.B.dylib              0x000a7e34 abort + 36
4   libstdc++.6.dylib              0x00066390 __gnu_cxx::__verbose_terminate_handler() + 588
5   libobjc.A.dylib                0x00008898 _objc_terminate + 160
6   libstdc++.6.dylib              0x00063a84 __cxxabiv1::__terminate(void (*)()) + 76
7   libstdc++.6.dylib              0x00063afc std::terminate() + 16
8   libstdc++.6.dylib              0x00063c24 __cxa_throw + 100
9   libobjc.A.dylib                0x00006e54 objc_exception_throw + 104
10  Foundation                     0x0000202a __NSThreadPerformPerform + 574
11  CoreFoundation                 0x000573a0 CFRunLoopRunSpecific + 1908
12  CoreFoundation                 0x00056c18 CFRunLoopRunInMode + 44
13  GraphicsServices               0x000041c0 GSEventRunModal + 188
14  UIKit                          0x00003c28 -[UIApplication _run] + 552
15  UIKit                          0x00002228 UIApplicationMain + 960
16  My App                             0x00002414 main (main.m:14)
17  My App                             0x000023e4 start + 32

Thread 1:
0   libSystem.B.dylib              0x00001488 mach_msg_trap + 20
1   libSystem.B.dylib              0x00004064 mach_msg + 60
2   CoreFoundation                 0x00057002 CFRunLoopRunSpecific + 982
3   CoreFoundation                 0x00056c18 CFRunLoopRunInMode + 44
4   WebCore                        0x000841d4 RunWebThread(void*) + 412
5   libSystem.B.dylib              0x0002b780 _pthread_body + 20

Thread 2:
0   libSystem.B.dylib              0x00001488 mach_msg_trap + 20
1   libSystem.B.dylib              0x00004064 mach_msg + 60
2   CoreFoundation                 0x00057002 CFRunLoopRunSpecific + 982
3   CoreFoundation                 0x00056c18 CFRunLoopRunInMode + 44
4   Foundation                     0x0005a998 +[NSURLConnection(NSURLConnectionReallyInternal) _resourceLoadLoop:] + 172
5   Foundation                     0x00053ac6 -[NSThread main] + 42
6   Foundation                     0x00001d0e __NSThread__main__ + 852
7   libSystem.B.dylib              0x0002b780 _pthread_body + 20

Thread 3:
0   libSystem.B.dylib              0x000262c0 select$DARWIN_EXTSN + 20
1   CoreFoundation                 0x000207e2 __CFSocketManager + 342
2   libSystem.B.dylib              0x0002b780 _pthread_body + 20

Thread 4:
0   libSystem.B.dylib              0x00015764 fegetenv + 0
1   libSystem.B.dylib              0x0002a160 time + 8
2   libicucore.A.dylib             0x00009280 uprv_getUTCtime + 6
3   libicucore.A.dylib             0x0000a492 icu::Calendar::getNow() + 2
4   libicucore.A.dylib             0x0000a2a0 icu::GregorianCalendar::GregorianCalendar(icu::Locale const&, UErrorCode&) + 86
5   libicucore.A.dylib             0x0000a242 icu::GregorianCalendar::GregorianCalendar(icu::Locale const&, UErrorCode&) + 2
6   libicucore.A.dylib             0x000098ec icu::Calendar::createInstance(icu::TimeZone*, icu::Locale const&, UErrorCode&) + 160
7   libicucore.A.dylib             0x00008762 icu::SimpleDateFormat::initializeCalendar(icu::TimeZone*, icu::Locale const&, UErrorCode&) + 28
8   libicucore.A.dylib             0x0000bd2c icu::SimpleDateFormat::SimpleDateFormat(icu::Locale const&, UErrorCode&) + 82
9   libicucore.A.dylib             0x0000bcd2 icu::SimpleDateFormat::SimpleDateFormat(icu::Locale const&, UErrorCode&) + 2
10  libicucore.A.dylib             0x000084aa icu::DateFormat::create(icu::DateFormat::EStyle, icu::DateFormat::EStyle, icu::Locale const&) + 148
11  libicucore.A.dylib             0x0000840e icu::DateFormat::createDateTimeInstance(icu::DateFormat::EStyle, icu::DateFormat::EStyle, icu::Locale const&) + 14
12  libicucore.A.dylib             0x00008336 udat_open + 70
13  CoreFoundation                 0x0006c2e0 CFDateFormatterCreate + 252
14  Foundation                     0x00019fd2 -[NSDateFormatter _regenerateFormatter] + 198
15  Foundation                     0x00019ebe -[NSDateFormatter init] + 150
16  My App                             0x00004cca -[TocTableController parser:didEndElement:namespaceURI:qualifiedName:] (TocTableController.m:1369)
17  Foundation                     0x000380e6 _endElementNs + 442
18  libxml2.2.dylib                0x00011d2c xmlParseXMLDecl + 1808
19  libxml2.2.dylib                0x0001ef08 xmlParseChunk + 3300
20  Foundation                     0x0003772a -[NSXMLParser parse] + 178
21  My App                             0x000055e2 -[TocTableController parseTocData:] (TocTableController.m:1120)
22  Foundation                     0x00053ac6 -[NSThread main] + 42
23  Foundation                     0x00001d0e __NSThread__main__ + 852
24  libSystem.B.dylib              0x0002b780 _pthread_body + 20

Thread 0 crashed with ARM Thread State:
    r0: 0x00000000    r1: 0x00000000      r2: 0x00000001      r3: 0x384e83cc
    r4: 0x00000006    r5: 0x001d813c      r6: 0x2ffff2b8      r7: 0x2ffff2c8
    r8: 0x38385cac    r9: 0x0000000a     r10: 0x0002c528     r11: 0x0012be50
    ip: 0x00000025    sp: 0x2ffff2c8      lr: 0x33b3db21      pc: 0x33b3db2c
  cpsr: 0x00070010

【问题讨论】:

能贴出对应的代码吗? TocTableController.m:1369,代码为(在问题中列出): NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 【参考方案1】:

崩溃的线程正在运行主事件循环。其中发生的一件事是自动释放池已耗尽,因此这可能是对象被过度释放的问题。

如果您可以重现该问题,打开 NSZombieEnabled 将是追踪任何过度发布错误的好方法,但这不是您可以在发货应用程序上启用的功能。

【讨论】:

谢谢。 NSZombieEnabled=YES 没有发现任何问题。我已经删除了自动释放并使用了不同的释放内存的方式。希望这能解决它。【参考方案2】:

相信我,情况仍然如此。您有过度释放对象。只需使用 NSZombies 即可找到管理不当的确切对象。

【讨论】:

以上是关于iPhone 崩溃报告的主要内容,如果未能解决你的问题,请参考以下文章

符号化 iPhone 应用程序崩溃报告

iphone崩溃分析一定准确吗

奇怪的 iPhone 0x8badf00d 崩溃报告

ios - iPhone/iPad 生态系统是不是有可靠的崩溃报告系统?

如何获取 iPhone 应用程序的崩溃报告

这个 IOS 应用程序崩溃报告是啥意思?