如何理解iPhone的崩溃日志

11

我只知道它崩溃了,而不是内存耗尽。

我怎么知道是哪个引起了错误?

Incident Identifier: 242C320A-763C-407E-BD40-443E3E9B611C
CrashReporter Key:   307097bc0924dac79e5352eb10692943c0ef05ad
Process:         AsianDelight [4894]
Path:            /var/mobile/Applications/7A8FF881-A033-45B9-8F72-8478217821E9/AsianDelight.app/AsianDelight
Identifier:      AsianDelight
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2010-01-20 16:32:49.285 +0700
OS Version:      iPhone OS 3.1.2 (7D11)
Report Version:  104

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000000
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                 0x00007532 realizeClass + 18
1   libobjc.A.dylib                 0x00007578 realizeClass + 88
2   libobjc.A.dylib                 0x00007578 realizeClass + 88
3   libobjc.A.dylib                 0x00007e76 prepareForMethodLookup + 26
4   libobjc.A.dylib                 0x0000523e lookUpMethod + 34
5   libobjc.A.dylib                 0x00002a0a _class_lookupMethodAndLoadCache + 6
6   libobjc.A.dylib                 0x00002740 objc_msgSend_uncached + 20
7   AsianDelight                    0x00004b3a -[FlowCoverView numTiles] (FlowCoverView.m:250)
8   AsianDelight                    0x000048ea -[FlowCoverView updateAnimationAtTime:] (FlowCoverView.m:487)
9   AsianDelight                    0x000057f6 -[FlowCoverView driveAnimation] (FlowCoverView.m:520)
10  Foundation                      0x0000ccfe __NSFireTimer + 130
11  CoreFoundation                  0x00056bac CFRunLoopRunSpecific + 2112
12  CoreFoundation                  0x00056356 CFRunLoopRunInMode + 42
13  GraphicsServices                0x00003cb8 GSEventRunModal + 108
14  GraphicsServices                0x00003d64 GSEventRun + 56
15  UIKit                           0x00002768 -[UIApplication _run] + 384
16  UIKit                           0x0000146c UIApplicationMain + 688
17  AsianDelight                    0x00002664 main (main.m:14)
18  AsianDelight                    0x00002620 start + 44

Thread 1:
0   libSystem.B.dylib               0x00000818 mach_msg_trap + 20
1   libSystem.B.dylib               0x00002ff8 mach_msg + 44
2   CoreFoundation                  0x000567f6 CFRunLoopRunSpecific + 1162
3   CoreFoundation                  0x00056356 CFRunLoopRunInMode + 42
4   WebCore                         0x0005d9de RunWebThread(void*) + 286
5   libSystem.B.dylib               0x0002492a _pthread_body + 10

Thread 0 crashed with ARM Thread State:
    r0: 0x0012cd00    r1: 0xffffffff      r2: 0x80000000      r3: 0x00000002
    r4: 0x00000000    r5: 0x0012cd00      r6: 0x38680878      r7: 0x2ffff3e4
    r8: 0x00145798    r9: 0x001fc098     r10: 0x00000000     r11: 0x2ffff628
    ip: 0x00000004    sp: 0x2ffff3cc      lr: 0x3240357f      pc: 0x32403532
  cpsr: 0x20000030

Binary Images:
    0x1000 -     0x7fff +AsianDelight armv6  <df65e87046878ce496d0b1ac952247a1> /var/mobile/Applications/7A8FF881-A033-45B9-8F72-8478217821E9/AsianDelight.app/AsianDelight
   0x6a000 -    0x6bfff  dns.so armv7  <35ac487c38e38ed5810d5ed0d5c67546> /usr/lib/info/dns.so
 0x3541000 -  0x366afff  GLEngine armv7  <3363af21f4d6a81aaae829238bb06eb4> /System/Library/Frameworks/OpenGLES.framework/GLEngine.bundle/GLEngine
 0x3696000 -  0x372afff  IMGSGX535GLDriver armv7  <999124d3d82ac52e0eb81732f945610c> /System/Library/Extensions/IMGSGX535GLDriver.bundle/IMGSGX535GLDriver
0x2fe00000 - 0x2fe24fff  dyld armv7  <5db9f5d0275997de58efff111816706e> /usr/lib/dyld
0x30149000 - 0x3016efff  AppSupport armv7  <ca2e9a4f0475af20028968840ab94ecf> /System/Library/PrivateFrameworks/AppSupport.framework/AppSupport
0x30175000 - 0x3017ffff  MobileCoreServices armv7  <36d71cd8dd49f5d5addb356f449b562a> /System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices
0x30184000 - 0x30184fff  Accelerate armv7  <939f94df6c7e6e7a090ddee1ec09c844> /System/Library/PrivateFrameworks/Accelerate.framework/Accelerate
0x301b8000 - 0x301c3fff  libz.1.dylib armv7  <8faba7ded9b3527ccf54c2f224f9a12f> /usr/lib/libz.1.dylib
0x301c4000 - 0x301eefff  CoreText armv7  <821e9c7c935b6a8d735e2d2d9ebcee04> /System/Library/PrivateFrameworks/CoreText.framework/CoreText
0x302c6000 - 0x302cefff  CoreVideo armv7  <9259f5ae2a74b53e4f13b27fa3d511e8> /System/Library/PrivateFrameworks/CoreVideo.framework/CoreVideo
0x302d4000 - 0x302d7fff  libGFXShared.dylib armv7  <1ab8608f288196f32905d3bdab9616b4> /System/Library/Frameworks/OpenGLES.framework/libGFXShared.dylib
0x304cf000 - 0x3050ffff  libsqlite3.dylib armv7  <c2b5985d8307d73b39140e76adfd2eb7> /usr/lib/libsqlite3.dylib
0x30578000 - 0x30a4efff  WebCore armv7  <4e2bac4e01a15979c9ac096f78280db0> /System/Library/PrivateFrameworks/WebCore.framework/WebCore
0x30b13000 - 0x30b13fff  vecLib armv7  <4eb91bf56603dc0db6784d8d3240bfa8> /System/Library/PrivateFrameworks/Accelerate.framework/Frameworks/vecLib.framework/vecLib
0x30c2b000 - 0x30d04fff  libGLProgrammability.dylib armv7  <efc744c0ff3697951a5c269c37a9b2cf> /System/Library/Frameworks/OpenGLES.framework/libGLProgrammability.dylib
0x30d05000 - 0x30d29fff  SystemConfiguration armv7  <c57df668b510f025ee5a173ad30fb48e> /System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration
0x30d6c000 - 0x30decfff  QuartzCore armv7  <af0722911ffc74fc08075e9831a6222e> /System/Library/Frameworks/QuartzCore.framework/QuartzCore
0x30e5d000 - 0x30e72fff  libresolv.9.dylib armv7  <2b6a9404652dd2b5abd1c6a5583e8533> /usr/lib/libresolv.9.dylib
0x30ec7000 - 0x30ed0fff  SpringBoardServices armv7  <17ca8b5262cd6484d41efdc72c6fd057> /System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices
0x30fe6000 - 0x30ffbfff  OpenGLES armv7  <be80a5e4c55c2920be2c31f740bb9dba> /System/Library/Frameworks/OpenGLES.framework/OpenGLES
0x31003000 - 0x31009fff  libkxld.dylib armv7  <04ab19af95239c12a98539478eebc560> /usr/lib/system/libkxld.dylib
0x312f6000 - 0x312fcfff  libgcc_s.1.dylib armv7  <263b2691cd12171b31fa600716104e4a> /usr/lib/libgcc_s.1.dylib
0x31338000 - 0x31367fff  libCGFreetype.A.dylib armv7  <2ec5ad6812f5ea3859cb4189d62b7265> /System/Library/Frameworks/CoreGraphics.framework/Resources/libCGFreetype.A.dylib
0x31393000 - 0x313cafff  IOKit armv7  <0afabe8bf08fc163ba8e4ed614092cd3> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
0x313e9000 - 0x313eafff  IOMobileFramebuffer armv7  <9d9f0254b5b64ced3d58191748f3027b> /System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/IOMobileFramebuffer
0x313ed000 - 0x314e2fff  Foundation armv7  <ede5b943f529ce1b862c15dc876992c1> /System/Library/Frameworks/Foundation.framework/Foundation
0x314ed000 - 0x31599fff  libxml2.2.dylib armv7  <a491bfc5f062f33185a3f98969bae3c2> /usr/lib/libxml2.2.dylib
0x31926000 - 0x319a8fff  WebKit armv7  <b9b7246a09f5db68e44497d318cb3ab6> /System/Library/PrivateFrameworks/WebKit.framework/WebKit
0x319a9000 - 0x31aa0fff  libSystem.B.dylib armv7  <3f94d4b13815a93cbdfc6c7dc2afe5b4> /usr/lib/libSystem.B.dylib
0x31aa2000 - 0x31b8bfff  AudioToolbox armv7  <393fa1e155bb0523c2a90555bb394498> /System/Library/Frameworks/AudioToolbox.framework/AudioToolbox
0x31b8d000 - 0x31bfcfff  CFNetwork armv7  <b55671f2472fdae3f811ae6f636b4e2e> /System/Library/Frameworks/CFNetwork.framework/CFNetwork
0x31bfe000 - 0x31c42fff  libGLImage.dylib armv7  <ea2c117d2db3bb4c7d2137ffb9a09bdd> /System/Library/Frameworks/OpenGLES.framework/libGLImage.dylib
0x31d59000 - 0x31d5cfff  IOSurface armv7  <81661b8e151a9af6ce5704a728e12dc7> /System/Library/PrivateFrameworks/IOSurface.framework/IOSurface
0x31ed9000 - 0x31f8dfff  JavaScriptCore armv7  <d3434c868a9a0f4016ed32ba90a35c4d> /System/Library/PrivateFrameworks/JavaScriptCore.framework/JavaScriptCore
0x31f91000 - 0x320e6fff  CoreGraphics armv7  <5852bd39fd1ef304da7b017949755cab> /System/Library/Frameworks/CoreGraphics.framework/CoreGraphics
0x321d4000 - 0x322d5fff  libicucore.A.dylib armv7  <1081389fef915d9b8858d0dfff04568e> /usr/lib/libicucore.A.dylib
0x323fc000 - 0x32499fff  libobjc.A.dylib armv7  <1a57ecb9f5c0f274a274b3eb53df48ed> /usr/lib/libobjc.A.dylib
0x324b5000 - 0x324cbfff  AddressBook armv7  <c21d7ab21d7e67f84c487bc278568bbe> /System/Library/Frameworks/AddressBook.framework/AddressBook
0x32511000 - 0x325bbfff  CoreFoundation armv7  <51c03f1f8755868781e3e719d8df7b6f> /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
0x3286c000 - 0x328f2fff  ImageIO armv7  <ea76d0fd3ca8c1a6104bc0f013255e2d> /System/Library/PrivateFrameworks/ImageIO.framework/ImageIO
0x3290f000 - 0x32918fff  GraphicsServices armv7  <5387c7197570ac7df97759c0402d453d> /System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices
0x32a01000 - 0x32a02fff  CoreSurface armv7  <f3aae0195e4510657029b19161138593> /System/Library/PrivateFrameworks/CoreSurface.framework/CoreSurface
0x32a56000 - 0x32a7efff  libvDSP.dylib armv7  <d846b621ce13b16241ac2d32ddd28615> /System/Library/PrivateFrameworks/Accelerate.framework/Frameworks/vecLib.framework/libvDSP.dylib
0x32a81000 - 0x32a86fff  liblockdown.dylib armv7  <5b665cd59d9884ceecec6441fc42bc14> /usr/lib/liblockdown.dylib
0x32aed000 - 0x32b07fff  libRIP.A.dylib armv7  <0dc4e83b63c1350517949e24204817fb> /System/Library/Frameworks/CoreGraphics.framework/Resources/libRIP.A.dylib
0x32b09000 - 0x32b2dfff  Security armv7  <3a3406fe12445942f4d767c7fa4c24ce> /System/Library/Frameworks/Security.framework/Security
0x32b60000 - 0x33524fff  UIKit armv7  <47c9d61f9cbe72938d1bfb1588306b97> /System/Library/Frameworks/UIKit.framework/UIKit
0x33594000 - 0x33599fff  MBX2D armv7  <ae091892e4419221d25f8db9307cedf0> /System/Library/PrivateFrameworks/MBX2D.framework/MBX2D
0x3359a000 - 0x335d7fff  CoreAudio armv7  <1eb427066a911d979a024e445464a067> /System/Library/Frameworks/CoreAudio.framework/CoreAudio
0x335d8000 - 0x33621fff  libstdc++.6.dylib armv7  <99401ed10ec4d5608ce23ec33dd757c6> /usr/lib/libstdc++.6.dylib
0x33627000 - 0x33632fff  libbsm.0.dylib armv7  <03f3879bad1802636dadeb457ee74cb2> /usr/lib/libbsm.0.dylib
5个回答

4
问题出现在FlowCoverView的numTiles方法中。你可以在那里查看。显然,它是一个未知的选择器发送到一个对象,因为它在objc_msgSend_...中失败。

3
EXC_BAD_ACCESS通常是在你试图向一个已释放的对象发送消息时出现的,你是否同意这种说法? - Alex Wayne
1
@AlexWayne 不总是这样。当您向对象发送无效的选择器时,也会发生这种情况。 - Richard J. Ross III

4

3

这可能有所帮助,但并不能直接帮助理解崩溃日志。 - user454322

2
首先,您应该了解有四种类型的崩溃,日志报告取决于崩溃类型:
  1. 看门狗超时
  2. 用户强制退出/关闭
  3. 低内存终止
  4. 错误
日志报告分为以下几个部分: 进程信息
CrashReporter Key: Unique anonymous device id   
Process: Name[id]
Version: CFBundleVersion(CFBundleShortVersionString)


Incident Identifier: 242C320A-763C-407E-BD40-443E3E9B611C
CrashReporter Key:   307097bc0924dac79e5352eb10692943c0ef05ad
Process:         AsianDelight [4894]
Path:            /var/mobile/Applications/7A8FF881-A033-45B9-8F728478217821E9/AsianDelight.app/AsianDelight
Identifier:      AsianDelight
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]


Basic information

Date/Time:       2010-01-20 16:32:49.285 +0700
OS Version:      iPhone OS 3.1.2 (7D11)
Report Version:  104

在这种情况下,崩溃没有提供有见地的信息,但是在其他情况下,您可以在这里找到异常的原因。
Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000000
Crashed Thread:  0

线程崩溃时的回溯(活动帧列表),在本例中是线程0
在这行代码中:
7 AsianDelight 0x00004b3a -[FlowCoverView numTiles] (FlowCoverView.m:250)
7 是帧数
AsianDelight 是二进制文件的名称
0x00004b3a 是函数的地址
[FlowCoverView numTiles] (FlowCoverView.m:250) 包含文件和行号。有时可能会是像 0x10009c000 + 137220 这样的基地址和偏移量。通过符号化,可以将其映射到源代码。 要进行符号化,只需将崩溃日志拖放到设备日志部分的Xcode组织器窗口中即可。请注意,Xcode应该可以访问二进制文件和.dsYM文件。如果Xcode无法符号化崩溃报告,请查看this link以了解如何手动操作。
Thread 0 Crashed:
0   libobjc.A.dylib                 0x00007532 realizeClass + 18
1   libobjc.A.dylib                 0x00007578 realizeClass + 88
2   libobjc.A.dylib                 0x00007578 realizeClass + 88
3   libobjc.A.dylib                 0x00007e76 prepareForMethodLookup + 26
4   libobjc.A.dylib                 0x0000523e lookUpMethod + 34
5   libobjc.A.dylib                 0x00002a0a _class_lookupMethodAndLoadCache + 6
6   libobjc.A.dylib                 0x00002740 objc_msgSend_uncached + 20
7   AsianDelight                    0x00004b3a -[FlowCoverView numTiles] (FlowCoverView.m:250)
8   AsianDelight                    0x000048ea -[FlowCoverViewupdateAnimationAtTime:] (FlowCoverView.m:487)

线程状态显示了崩溃发生时的值和寄存器。
Thread 0 crashed with ARM Thread State:
r0: 0x0012cd00    r1: 0xffffffff      r2: 0x80000000      r3: 0x00000002
r4: 0x00000000    r5: 0x0012cd00      r6: 0x38680878      r7: 0x2ffff3e4
r8: 0x00145798    r9: 0x001fc098     r10: 0x00000000     r11: 0x2ffff628
ip: 0x00000004    sp: 0x2ffff3cc      lr: 0x3240357f      pc: 0x32403532

发生崩溃时已加载二进制文件。
Binary Images:
0x1000 -     0x7fff +AsianDelight armv6  <df65e87046878ce496d0b1ac952247a1> /var/mobile/Applications/7A8FF881-A033-45B9-8F72-8478217821E9/AsianDelight.app/AsianDelight
0x6a000 -    0x6bfff  dns.so armv7  <35ac487c38e38ed5810d5ed0d5c67546>/usr/lib/info/dns.so
0x3541000 - 

这个答案基于2010年苹果全球开发者大会的317号演讲《了解 iPhone OS 上的崩溃报告》(Understanding Crash Reports on iPhone OS),演讲人是Madhuwanti Vaidya和Bill Dirks,我是通过Pierre's answer找到的。
以下是该演讲的pdf文件: http://adcdownload.apple.com//wwdc_2010/wwdc_2010_video_assets__pdfs/317__understanding_crash_reports_on_iphone_os.pdf

1

我遇到了同样的问题,并找到了一个重现案例:当我在FlowCoverView中翻阅图像并立即点击完成按钮时,它会崩溃并显示完全相同的崩溃日志。

看起来完成操作导致FlowCoverViewController被释放,这导致FlowCoverView的代理程序失效。

如果此时FlowCoverView的touchesEnded正在进行中,则会导致崩溃。

可能有更好的解决方法,但是这是我尝试过的似乎解决了这个问题:

在FlowCoverViewController的dealloc方法中,我尝试访问FlowCoverView以将其代理设置为nil:

-(void)dealloc
{
NSArray *viewsArray = [self.view subviews];
for (UIView*v in viewsArray)
{
if ([v isKindOfClass:[FlowCoverView class]])
{
FlowCoverView *fcv = (FlowCoverView*)v;
fcv.delegate = nil;
}
}
...
}

请告诉我这是否解决了您的崩溃问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接