iOS - EXC_BAD_ACCESS 错误排查

来源:互联网 发布:java线程模型包含 编辑:程序博客网 时间:2024/05/04 07:29

程序开发时遇到 EXC_BAD_ACCESS 错误导致 Crash,出现这种错误时一般 Xcode 不会给我们太多的信息来定位错误来源,只是在应用 Delegate 上留下像Thread 1: Program received signal:”EXC_BAD_ACCESS”,让问题无从找起。

尝试解决方法:

Xcode 使用 cmd + shift + <打开 如下界面并且勾选红框中选项

这里写图片描述

然后运行程序执行操作到Crash位置,此时在控制台中会出现

//ooooo为进程pid,xxxxxx为对象地址2016-06-13 17:15:43.035 test[ooooo:4702304] -[XXXXXX XXXXXX] message sent to deallocated instance xxxxxx

此时打开终端,输入

malloc_history ooooo xxxxxx |grep xxxxxx
Invalid connection: com.apple.coresymbolicationdALLOC 0x7f9b236f42d0-0x7f9b236f468f [size=960]: thread_1139a9000 |start | main | UIApplicationMain | GSEventRunModal | CFRunLoopRunSpecific | __CFRunLoopRun | __CFRunLoopDoSources0 | __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ | _UIApplicationHandleEventQueue | _UIApplicationHandleEventFromQueueEvent | -[UIApplication sendEvent:] | -[UIWindow sendEvent:] | -[UIWindow _sendTouchesForEvent:] | -[UIButton(PPiAwesome) touchesEnded:withEvent:] | -[UIControl touchesEnded:withEvent:] | -[UIControl _sendActionsForEvents:withEvent:] | -[UIApplication sendAction:to:from:forEvent:] | -[XXXXXXXXXXXX XXXXXXX:] | _objc_rootAlloc | class_createInstance | calloc | malloc_zone_calloc

会出现上述信息,这些信息为该对象的全部调用,-[XXXXXXXXXXXX XXXXXXX:]为该对象最后调用的位置,在该方法中可以打印各对象的地址,与最后message sent to deallocated instance xxxxxx 中 xxxxx 的地址进行对比,找出问题所在。

问题解决后,取消上图勾选的选项

0 0
原创粉丝点击