文档章节

Xcode7中你一定要知道的炸裂调试神技

Gong_xiao
 Gong_xiao
发布于 2015/10/23 14:17
字数 784
阅读 110
收藏 3

Xcode7中你一定要知道的炸裂调试神技


Xcode7中苹果为我们增加了两个重要的debug相关功能。了解之后觉得非常实用,介绍给大家。

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会开始下载相关的崩溃信息到本地中(网络环境不好时可能要等待一些时间)。


organizer窗口

可以在左侧选择你要查看崩溃信息的发布版本




在崩溃信息这一栏苹果会按照崩溃数量排序,将崩溃数量最多的排在最前。右侧的详细信息会显示是崩溃时的调用堆栈,可以看到是哪行代码导致的崩溃。


选中要解决的崩溃后,可以在窗口右侧选择open in project。


神奇的事情发生了!!!在打开的项目中,会直接定位到崩溃的那行代码。这大大提高了调试的效率!我已经的迫不及待要和开发安卓的同事分享这份喜悦了。

注意!注意!

因为之前的项目发布时没有用xcode7打包,所以猜测符号表可能没有上传到苹果服务器,所以以前的项目可能不能直接显示是哪行代码,而是显示调用时出错的内存地址。不过下个版本你用xcode发布后就可以正常看到啦。

在解决完这个crash后可以标记为已经解决。有两个地方可以标记。



所以没有升级xcode7的同学赶紧升吧。O(∩_∩)O~


本文转载自:http://www.jianshu.com/p/70ed36cf8a98?utm_campaign=maleskine&utm_content=note&utm_medium=writer_s...

共有 人打赏支持
Gong_xiao
粉丝 2
博文 56
码字总数 7990
作品 0
南京
Xcode7中你一定要知道的炸裂调试神技

Xcode7中苹果为我们增加了两个重要的debug相关功能。了解之后觉得非常实用,介绍给大家。 1.Address Sanitizer: 妈妈再也不用担心 EXCBADACCESS? EXCBADACCESS一直是很多开发者的噩梦,因为这...

TomatosX
2015/10/29
0
0
fir.im Weekly - 热门 iOS 第三方库大盘点

本期 fir.im Weekly 收集的热度资源,大部分关于Android、iOS 开发工具、源码和脑洞大开的 UI 动画,希望给你带来更多的工作创意与灵感。 盘点国内程序员不常用的热门iOS第三方库 @ios122 的...

风起云飞fir_im
2015/10/21
65
0
app不可用,如何解决

xcode真机调试安装到设备上的app,几天后显示“app不可用”,还会遇到闪退,这是怎么回事呢,应该如何解决 我现在用的是Xcode7免证书调试新手跪求大神解答,无限感激

sharyJane
2016/06/29
62
0
React Native真机调试

最近在尝试使用 React Native 做一些东西,发现真机调试还是有一些坑存在的。 iOS 真机调试 首先,你要让调试用电脑和你的手机必须处于相同的 WiFi 网络中下 打开 iOS 项目的 文件 更改 中的...

mot_evans
2015/09/30
19.3K
3
【官方方法】xcode7免证书真机调试

先看官网的图 可以看到官方说了xcode7可以让所有人都更轻松的将app运行在自己的设备上,而无需开发者帐号。 不过xcode7需要OSX10.11的支持,而目前(2015.06.10)下载后者的开发者预览版是需...

hejunbinlan
2015/09/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

异步化,高并发大杀器

今天来聊聊如何让项目异步化的一些事。 在进入正文之前,顺便给大家推荐一个Java架构方面的交流学习群:698581634,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分...

Java大蜗牛
9分钟前
0
0
织梦dedecms安全设置

网站本身做好防范: 1、修改默认后台名。 打开网站根目录,找到[dede],这个文件夹就是后台的路径,可以随意修改,比如修改为[adminbuy],此时后台登陆的路径为:http://www.*****.com/admi...

雨季2014
10分钟前
0
0
完美Python入门基础知识点总结,看完你的Python就完全入门了!

Python标识符 在 Python 里,标识符有字母、数字、下划线组成。 在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。 Python 中的标识符是区分大小写的。 以下划线...

糖宝lsh
16分钟前
0
0
Java关于前后台传输中文乱码以及Excel下载乱码解决

针对乱码,一般情况是前后台以及中间件编码格式不同导致.故需要保证编码格式相同即可. 1.前台页面格式指定,这里用的是jsp,故需要将pageEncoding指定为"UTF-8" 2.指定服务器编码格式,比如用的t...

勤奋的蚂蚁
18分钟前
0
0
Flutter组件 - Flexible

Flexible是一个控制Row、Column、Flex等子组件如何布局的组件。 Flexible组件可以使Row、Column、Flex等子组件在主轴方向有填充可用空间的能力(例如,Row在水平方向,Column在垂直方向),但是...

一箭落旄头
21分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部