在发布我的iOS应用程序的新版本后,我经常遇到以下崩溃。
崩溃:WebThread EXC_BAD_ACCESS KERN_INVALID_ADDRESS位于0x80000012
这是令人恼火的崩溃之一,其中堆栈跟踪没有提供任何与其崩溃或导致崩溃的原因相关的线索。一个主要的问题是这次崩溃只发生在iOS8中。请在下面找到堆栈跟踪:
0 libobjc.A.dylib objc_msgSend + 5 release
1 CoreFoundation CFRelease + 600
2 QuartzCore CA::release_objects(X::List<void const*>*) + 16
3 QuartzCore -[CAAnimation dealloc] + 54
4 libobjc.A.dylib objc_object::sidetable_release(bool) + 166
5 libobjc.A.dylib (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 404
6 CoreFoundation _CFAutoreleasePoolPop + 16
7 Foundation -[NSAutoreleasePool drain] + 122
8 CFNetwork AutoAutoreleasePool::~AutoAutoreleasePool() + 24
9 CFNetwork ___ZN27URLConnectionClient_Classic18_withDelegateAsyncEPKcU13block_pointerFvP16_CFURLConnectionPK33CFURLConnectionClientCurrent_VMaxE_block_invoke_2 + 166
10 CFNetwork RunloopBlockContext::_invoke_block(void const*, void*) + 60
11 CoreFoundation CFArrayApplyFunction + 36
12 CFNetwork RunloopBlockContext::perform() + 182
13 CFNetwork MultiplexerSource::perform() + 216
14 CFNetwork MultiplexerSource::_perform(void*) + 48
任何提示都将不胜感激。提前谢谢。
答案 0 :(得分:0)
大多数情况下,EXC_BAD_ACCESS
来自向已发布的对象发送消息。虽然这在ARC下比以前更难,但仍有可能。
KERN_INVALID_ADDRESS
部分只是告诉您,您尝试访问的内存不是应用程序内存空间的一部分,这为已发布的对象句柄假设提供了信任。
要调试以前发布的对象(称为“Zombie”对象),请在调试器中启用NSZombies。在XCode 7中......
Diagnostics
Enable Zombie Objects
注意:您只想在调试版本中执行此操作,因为僵尸对象会占用大量内存并损害整体性能。不过,它仍然是一款出色的调试工具。