iOS开发日记54-Xcode7调试神技
今天博主有一个升级Xcode7的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步.
1.Address Sanitizer: 再也不用担心 EXC_BAD_ACCESS
EXC_BAD_ACCESS一直是很多开发者的噩梦,因为这个错误很不直观,出现后往往要花很长时间才能定位到错误。苹果这次带来了革命性的提升。
在项目的Scheme中Diagnostics下,选中enable address sanitizer(注意选中后Xcode会重新编译整个项目)。
这样设置后,如果再出现类似的错误会有更详细的错误信息提示,甚至会有内存使用情况的展示。
2.发布后的crash跟踪,轻松定位崩溃代码
在升级iOS9后,苹果会询问用户是否同意收集应用崩溃报告。这样在itunes connect的后台统计中就可以看到一些收集到的数据(通常会有相当一部分用户不同意,所以只是部分数据)。
2.1查看崩溃统计信息
在connect后台中选择app分析
进入分析页面后,tab中选择“指标”
然后在左侧的菜单中选择“崩溃”
这样就可以看到苹果收集到的崩溃统计,一定要注意这里只是一部分的数据,举例来说如果你看到的崩溃是10次,但是可能苹果只收集了20%的用户信息。所以你可以大概估计应该是10*5=50次崩溃。
2.2在Xcode中查看具体崩溃信息
在xcode中菜单的window下选择organizer,在打开的窗口中选择Crashes,这样Xcode会开始下载相关的崩溃信息到本地中(网络环境不好时可能要等待一些时间)。
可以在左侧选择你要查看崩溃信息的发布版本
在崩溃信息这一栏苹果会按照崩溃数量排序,将崩溃数量最多的排在最前。右侧的详细信息会显示是崩溃时的调用堆栈,可以看到是哪行代码导致的崩溃。
选中要解决的崩溃后,可以在窗口右侧选择open in project。
神奇的事情发生了!!!在打开的项目中,会直接定位到崩溃的那行代码。这大大提高了调试的效率!我已经的迫不及待要和开发安卓的同事分享这份喜悦了。
注意!注意!
因为之前的项目发布时没有用xcode7打包,所以猜测符号表可能没有上传到苹果服务器,所以以前的项目可能不能直接显示是哪行代码,而是显示调用时出错的内存地址。不过下个版本你用xcode发布后就可以正常看到啦。
在解决完这个crash后可以标记为已经解决。有两个地方可以标记。
所以没有升级xcode7的同学赶紧升吧。O(∩_∩)O~
http://www.tuicool.com/articles/q67feaZ?plg_nld=1&plg_uin=1&plg_auth=1&plg_nld=1&plg_usr=1&plg_vkey=1&plg_dev=1
http://www.jianshu.com/p/456f96564567?plg_nld=1&plg_uin=1&plg_auth=1&plg_nld=1&plg_usr=1&plg_vkey=1&plg_dev=1
转载于:https://www.cnblogs.com/Twisted-Fate/p/5067228.html
iOS开发日记54-Xcode7调试神技相关推荐
- Xcode7中你一定要知道的炸裂调试神技(转)
1.Address Sanitizer: 妈妈再也不用担心 EXC_BAD_ACCESS? EXC_BAD_ACCESS一直是很多开发者的噩梦,因为这个错误很不直观,出现后往往要花很长时间才能定位到错 ...
- Xcode7中你一定要知道的炸裂调试神技
1.Address Sanitizer: 妈妈再也不用担心 EXC_BAD_ACCESS? EXC_BAD_ACCESS一直是很多开发者的噩梦,因为这个错误很不直观,出现后往往要花很长时间才能定位到错 ...
- Xcode7中你一定要知道的炸裂调试神技【转载】
Xcode7中苹果为我们增加了两个重要的debug相关功能.了解之后觉得非常实用,介绍给大家. 1.Address Sanitizer: 妈妈再也不用担心 EXC_BAD_ACCESS? EXC_BA ...
- iOS开发 实战篇---Xcode7免费真机测试流程
Xcode 7真机测试详解 1.准备 注意:一定要让你的真机设备的系统版本和app的系统版本想对应,如果不对应就会出现一个很常见的问题:could not find developer disk im ...
- iOS与导航栏有关的神技
1.导航栏上的返回按钮 <span style="font-size:24px;"> </span><span style="font- ...
- iOS开发日记24-详解RunLoop
今天博主有一个RunLoop的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. RunLoop是什么? 从字面上理解,Runloop指的就是运行循环,iOS中,只要程序启动, 就会创建Run ...
- ios开发日记- 5 屏幕截图
-(void)fullScreenshots{ UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow]; UIGr ...
- ios开发日记-18上传appStore时,遇到错误,代码为ERROR ITMS-90049
上传appStore时,遇到错误,代码为ERROR ITMS-90049 解决问题方式: 1. 在xcode左下角搜索info.plist 找到第三方的info.plist文件,如友盟中腾讯Api文 ...
- iOS开发日记1-tableview编辑
今天博主有一个tableview编辑的需求,遇到了一些困难点,在此和大家分享,能够共同进步. tableview的编辑是通过[self.tableview setEditing: BOOL1 anim ...
最新文章
- TensorFlow Dropout
- 空腹吃香蕉对身体好吗?哪些水果不宜空腹吃
- P3390矩阵快速幂
- P1018 乘积最大
- 约数研究pascal程序
- Product search parameter的determine逻辑
- jquery $.trim()方法使用介绍
- 39. 组合总和020(思路+详解)
- java8 javafx_Java 8的新增功能(第1部分– JavaFX)
- Exchange 2003升级至Exchange 2007
- 癌症精准医疗上市公司泛生子基因 - 内推(名额有限)
- Windows获取系统版本号
- 吴恩达深度学习2.3练习_Improving Deep Neural Networks_Tensorflow
- 获取cookies的简单代码(总结待续)
- matlab数据拟合
- 关关采集器规则编写教程(最详细的教程)
- 斗鱼弹幕服务器连接协议,斗鱼弹幕服务器第三方接入协议v1 6 2.pdf
- 几张图片生成3D模型?距离真正的AI建模还有多远?
- chareter oracle,Oracle数据库的操作程序.pdf-汇文网
- 关于cmd打开时提示“系统找不到指定的路径”问题