我正在尝试调试我的应用程序崩溃的原因。从我的审判中我意识到,在某个地方,有泄漏,我正在搞清楚。我知道它,因为当我尝试使用这种方法here进行调试时,它最终会崩溃,因为看起来内存泄漏会在一段时间后膨胀。
为了找出造成的,我现在在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
我的问题:有没有关于如何阅读和理解此调试日志的提示?也许是一个链接或书籍,涵盖了如何一起调试。感谢。
答案 0 :(得分:7)
在这种情况下,
2 libsystem_c.dylib 0x35ce3bf8 abort + 72
3 libsystem_c.dylib 0x35d1f024 free + 104
自由函数检测到释放地址不在堆的范围内或无效,然后调用abort函数。
“Technical Note TN2239 - iOS Debugging Magic”是非常有用的文档。请查看“Memory Allocator”并使用像NSZombieEnabled这样的Malloc *环境。将断点设置为中止函数对于获取免费和跟踪堆栈的参数也很有用。
答案 1 :(得分:4)
该崩溃日志未符号化,因此它不会在您的应用中为您提供行号和对象名称。有一个过程可以将此信息添加到崩溃日志中,以便为您提供更多信息来帮助调试崩溃。
请参阅http://developer.apple.com/tools/xcode/symbolizingcrashdumps.html特别是关于符号化崩溃转储的部分。