如何快速查找无法定位的错位?

对于一般的错误全局断点就可以快速定位,或者是根据控制台的输出内容也可以快速定位错误的原因!可是如果程序崩溃在main函数并且控制台没有任何输入,那就比较头疼了!一点一点排除实在是太浪费时间了!根据我最近遇到的bug来讲述一下如何快速定位错误代码的位置!


如何快速查找无法定位的错位?_第1张图片
崩溃的位置

只能根据这仅有的有点提示信息进行分析。exc_bad_access(code=exc_i386_gpflt)错误的原因是内存泄露,访问了已经释放的对象导致的;

首先通过xcode再来试一下定位错误的位置

设置xcode开启僵尸对象的定位


如何快速查找无法定位的错位?_第2张图片

如何快速查找无法定位的错位?_第3张图片

这时控制台有输出了


如何快速查找无法定位的错位?_第4张图片

可以确定的是DisclaimerViewController控制器的问题,但是还是不够准确;

再来试试instruments进行分析

如何快速查找无法定位的错位?_第5张图片

如何快速查找无法定位的错位?_第6张图片

不知道是不是xcode问题 ,也无法定位到代码位置;(以前我就遇到过xcode的原因 无法定位到代码位置 重新安装就没有问题了,如果可以定位到 麻烦留言告知一下)

利用终端定位

打开活动监视器


如何快速查找无法定位的错位?_第7张图片
活动监视器

找到相应的app进程


如何快速查找无法定位的错位?_第8张图片

根据pid 和错误代码 在终端进程查看sudo malloc_history 19464 0x7f979d4c48c0
找到最后执行的代码进行相应的修改就可以了

0x7f979d4c48c0:为xcode开启僵尸对象定位时输出的错位代码


如何快速查找无法定位的错位?_第9张图片

最终定位在-[FeatureCollectionController tapToOtherVC]
我在FeatureCollectionController控制器的tapToOtherVC方法里使用了DisclaimerViewController!对其进行相应的修改就可以了!

感谢您的阅读,希望对您有所帮助!欢迎任何形式的转载,但请务必注明出处,尊重他人劳动!

你可能感兴趣的:(如何快速查找无法定位的错位?)