如何理解XCode 4上的崩溃日志

Wil*_*lly 4 debugging objective-c ios xcode4

我正在尝试调试我的应用程序崩溃的原因.从我的审判中我意识到,在某个地方,有泄漏,我正在搞清楚.我知道它是因为当我在这里使用这种方法尝试调试时,它最终会崩溃,因为看起来内存泄漏在一段时间后会膨胀.

为了找出原因,我现在在XCode 4上打开NSZombieEnabled为YES但是我没有看到任何内容.所以现在我转向崩溃日志.这是:

Thread 7 Crashed:
0   libsystem_kernel.dylib          0x31b71a1c __pthread_kill + 8
1   libsystem_c.dylib               0x35ceb3b4 pthread_kill + 52
2   libsystem_c.dylib               0x35ce3bf8 abort + 72
3   libsystem_c.dylib               0x35d1f024 free + 104
4   ImageIO                         0x32ca35f0 ImageProviderReleaseInfoCallback + 56
5   CoreGraphics                    0x31a05284 image_provider_finalize + 8
6   CoreFoundation                  0x35aad288 _CFRelease + 160
7   CoreFoundation                  0x35aad1ae CFRelease + 82
8   CoreGraphics                    0x319fe150 CGImageProviderRelease + 4
9   CoreGraphics                    0x31a00bac CGImageBlockSetRelease + 44
10  CoreGraphics                    0x31a00b70 img_blocks_destroy + 8
11  CoreGraphics                    0x319fdaae CGSImageDataUnlock + 26
12  libRIP.A.dylib                  0x309eebae ripc_ReleaseImage + 374
13  libRIP.A.dylib                  0x309ecc9c ripc_DrawImage + 536
14  CoreGraphics                    0x319f9284 CGContextDelegateDrawImage + 44
15  CoreGraphics                    0x319f9142 CGContextDrawImage + 250
16  myapp                           0x000c6a28 0x45000 + 530984
17  myapp                           0x000c6d6a 0x45000 + 531818
18  myapp                           0x000c681c 0x45000 + 530460
19  myapp                           0x000c3526 0x45000 + 517414
20  myapp                           0x000c3796 0x45000 + 518038
21  Foundation                      0x33486382 -[NSThread main] + 38
22  Foundation                      0x334f85c6 __NSThread__main__ + 966
23  libsystem_c.dylib               0x35ceb30a _pthread_start + 242
24  libsystem_c.dylib               0x35cecbb4 thread_start + 0
Run Code Online (Sandbox Code Playgroud)

我的问题:有没有关于如何阅读和理解这个调试日志的提示?也许是一个链接或书籍,涵盖了如何一起调试.谢谢.

Kaz*_*oto 7

在这种情况下,

2   libsystem_c.dylib               0x35ce3bf8 abort + 72
3   libsystem_c.dylib               0x35d1f024 free + 104
Run Code Online (Sandbox Code Playgroud)

自由函数检测到释放地址不在堆的范围内或无效,然后调用abort函数.

" 技术说明TN2239 - iOS调试魔术 "是非常有用的文档.请查看"Memory Allocator"并使用像NSZombieEnabled这样的Malloc*环境.将断点设置为中止功能对于获取免费和跟踪堆栈的参数也很有用.