[xxx respondsToSelector:]message sent to deallocated instance和空地址崩溃 空指针

当我有一天敲完代码一运行发现崩溃了!!!可是重新运行又好了,但是没过多久又崩溃了!直接跳到AppDelegate提示空地址错误

即便我加上全局断点也没有跳到指定位置 

这困扰了好久,于是求助大神说我指针玩儿丢了!

百度了很多说我  再次使用了释放掉的一个对象地址,,关键是---我并不知道我到底使用了谁,,成了野指针(或者叫僵尸指针),总是创建cell的时候cell里面的ImageView控件被释放没有了!!!我真的很无奈。。。


 找到野指针--方法一、

于是---打印出空地址位置---如下

左击工程 -----> Edit Scheme ----> Run -----> Diagnostics 勾选各种地址使用错误提示的调试选项



结果控制台真的输出了,,告诉我哪里用了这个“僵尸指针”,,但是方法是我从没见过的,应该是苹果封装在里面使用的方法,然并卵!!

无果,最终好好整理了该控制器的各个变量,每个都审查一遍,最终发现有个可变数组使用有问题,而且他是多余的,于是果断删除,重新整理一一下代码,经过无数次运行,这个“僵尸指针”好了!!!↖(^ω^)↗


查了相关资料,为了挑出这个“僵尸指针”发现一下相关:

1、、用LLDB排查deallocated instance问题

(lldb 是调试程序的一种命令语句,主要调试 C/C++ , 在运行程序时在!终端!进行调试,,想多了解的可以查找资料)

在控制台中可以使用xcode7.0的lldb命令方法: info malloc-history xxxx 来调用堆栈 查这个野指针崩溃所在,但我输入发现xcode根本就不认识,于是我输入了  help 没看到这个命令语句 (输入 po 倒是认识)

2、、用gdb命令

(Linux下的调试器,也是一种调试C/C++程序的调试语句,后来苹果进化形成LLDB,以前也是gdb,,想多多了解的可自寻资料

gdb 与之对应的方法一样然并卵,不识别


 找到野指针崩溃语句--方法二(在xcode7.0以后 调试窗口可选项改变,已经可以自己打出调用野指针的代码句)

运行程序运行到发生崩溃的地方(有控制台崩溃野指针地址)

---->打开“活动监视器”

在 ---Launchpad---其他---活动监视器(旁边还有终端,也打开,一会儿也用)


----->找到目标的PID(有程序进程id) (这里xcode的PID是363)



------>打开终端输入命令:sudo malloc-history 进程id 崩溃地址然后看见最终指向,

(这里我借用一下别人的图片,本来想自己截图,可运行了好多遍也遇不见崩溃了,反正我的崩溃地方的方法我着实没见过)


上述方法二最终在终端输出的尔找到的方法在方法一中即可在控制台中输出了


其他文章:

(1)http://www.devdiv.com/lldb_message_sent_to_deallocated_instance_-blog-50901-50856.html

(2)lldb使用方法大全 : http://wenku.baidu.com/link?url=EotqojtVTKv9KDLFHcI8PplWD4fLENSHIbdtsOQpt85yyeU8myCNpcVnNSbvV2-PLSLYMgtYwZq8G23xLlayvzRiWa2FVcpWdcLzw2Y_vKe

(3)gdb使用调试命令:http://www.360doc.com/content/12/0626/22/7775902_220642088.shtml

(4)gdb命令--lldb命令--对应:http://blog.163.com/l1_jun/blog/static/14386388201210202355254/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值