iOS崩溃,未知原因
问题描述:
我正在使用iOS框架,一个应用程序崩溃。不知道问题出在哪里。基于日志,我认为一个对象正在手动释放,但随后是自动释放,再次导致崩溃。有没有人看到过这样的崩溃?不知道这是由我的框架还是使用它的应用程序引起的。iOS崩溃,未知原因
Crashed: com.apple.root.user-initiated-qos
0 libobjc.A.dylib 0xfffffffff objc_object::release() + 8
1 libobjc.A.dylib 0xfffffffff (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 724
2 CoreFoundation 0xfffffffff _CFAutoreleasePoolPop + 28
3 libdispatch.dylib 0xfffffffff _dispatch_client_callout2 + 12
4 libdispatch.dylib 0xfffffffff _dispatch_apply_invoke_and_wait + 165
5 libdispatch.dylib 0xfffffffff dispatch_apply_f + 650
6 CoreFoundation 0xfffffffff -[__NSSetM enumerateObjectsWithOptions:usingBlock:] + 295
7 MyFramework 0xfffffffff MyFunction + 18550
8 MyFramework 0xfffffffff MyFunction + 18450
9 libdispatch.dylib 0xfffffffff _dispatch_call_block_and_release + 24
10 libdispatch.dylib 0xfffffffff _dispatch_client_callout + 16
11 libdispatch.dylib 0xfffffffff _dispatch_queue_serial_drain + 928
12 libdispatch.dylib 0xfffffffff _dispatch_queue_invoke + 884
13 libdispatch.dylib 0xfffffffff _dispatch_queue_override_invoke + 344
14 libdispatch.dylib 0xfffffffff _dispatch_root_queue_drain + 540
15 libdispatch.dylib 0xfffffffff _dispatch_worker_thread3 + 124
16 libsystem_pthread.dylib 0xfffffffff _pthread_wqthread + 1096
17 libsystem_pthread.dylib 0xfffffffff start_wqthread + 4
答
当你看到在堆栈_dispatch_root_queue_drain
崩溃跟踪它意味着一些块已经在该队列已经执行,自动释放池被耗尽
你需要检查对象的任何内存泄漏被释放这样的碰撞时,在线程中执行块,但正与新对象发行再次调用,所以尝试检查下面的链接,它可以帮助也许它因内存问题和对象重新释放
https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/EradicatingZombies.html
你试过发生设置一个Exce ption断点还是使用了内存工具?因为这里没有足够的继续。 – Abizern
是的,问题是我无法重现崩溃。从我的框架中列出的日志功能非常简单,这导致我相信它不是我的框架导致崩溃。我希望有人会熟悉objc_object :: release()和(匿名命名空间):: AutoreleasePoolPage :: pop(void *)调用。 –
也许你试图重现崩溃并获得序列使其崩溃,然后只有您可以正确调试它。 – GeneCode