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会开始下载相关的崩溃信息到本地中(网络环境不好时可能要等待一些时间)。
organizer窗口
可以在左侧选择你要查看崩溃信息的发布版本
在崩溃信息这一栏苹果会按照崩溃数量排序,将崩溃数量最多的排在最前。右侧的详细信息会显示是崩溃时的调用堆栈,可以看到是哪行代码导致的崩溃。
选中要解决的崩溃后,可以在窗口右侧选择open in project。
神奇的事情发生了!!!在打开的项目中,会直接定位到崩溃的那行代码。这大大提高了调试的效率!我已经的迫不及待要和开发安卓的同事分享这份喜悦了。
注意!注意!
因为之前的项目发布时没有用xcode7打包,所以猜测符号表可能没有上传到苹果服务器,所以以前的项目可能不能直接显示是哪行代码,而是显示调用时出错的内存地址。不过下个版本你用xcode发布后就可以正常看到啦。
在解决完这个crash后可以标记为已经解决。有两个地方可以标记。
参考链接:http://www.cocoachina.com/ios/20151020/13794.html
Xcode7中你一定要知道的炸裂调试神技(转)的更多相关文章
- Xcode7中你一定要知道的炸裂调试神技
转自:http://www.cocoachina.com/ios/20151020/13794.html Xcode7中苹果为我们增加了两个重要的debug相关功能.了解之后觉得非常实用,介绍给大家. ...
- Xcode7中你一定要知道的炸裂调试神技【转载】
Xcode7中苹果为我们增加了两个重要的debug相关功能.了解之后觉得非常实用,介绍给大家. 1.Address Sanitizer: 妈妈再也不用担心 EXC_BAD_ACCESS EXC_BAD ...
- 关于Xcode7中添加不了libresolv.dylib等类似库的问题
Xcode7中,由于某些机制,使得我们在添加类似于 libresolv.dylib.libz.dylib等库的时候,直接在Build Phases中点击加号添加,似乎已经无法找到相应的库.此时,我们可 ...
- 关于Xcode7中的tbd文件
tbd 是 text-based stub libraries的意思, 是苹果在Xcode7中使用的一个技术,便于减少Xcode7中SDK的体积. 下面讲解下Xcode7如何通过tbd这个技术减少SD ...
- Xcode7中 添加 .dylib
转一个 Xcode 7 缺少 *.dylib库的解决方法 Xcode7中 Link Binary With Libraries 没有 .dylib库,只能找到对应的 .tbd,但不能代替使用,通过查找 ...
- xcode7中使用cocos2d-x3.8的webview控件
在XCode7中使用cocos2d-x 3.3以上版本的WebView控件时,碰到了编译错误 App Transport Security has blocked a cleartext HTTP ( ...
- 消除 Xcode7 中 directory not found for option 'xxxx' 警告
消除 Xcode7 中 directory not found for option 'xxxx' 警告 升级Xcode7之后,你会遇到一些警告信息,诸如以下一条: ld: warning: dire ...
- win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件
win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件 我杀过 w3wp.exe和asp.net_state的进程,重启 iis admin的服务,都还是不行. 只是把 ...
- 【转贴】gdb中的信号(signal)相关调试技巧
一篇不错的帖子,讲的是gdb中的信号(signal)相关调试技巧 转自Magic C++论坛 http://www.magicunix.com/index_ch.html http://www.m ...
随机推荐
- android 限制adb的访问目录
最近有个特殊的要求,engneer版本既要可以adb访问,且adb有的目录不能访问 如/data/目录. 用传统的chmod chgrp等无法满足客户需求,只能修改内核文件系统部分. 添加函数,检查路 ...
- repo的小结
repo仅仅是google用Python脚本写的调用git的一个脚本,主要是用来下载.管理Android项目的软件仓库. 1. 下载 repo 的地址: http://android.git.kern ...
- Java 之文件目录操作
1.判断文件是否存在 File file = new File("d:\\study\\temp\\test.java"); boolean bl = file.exists(); ...
- jquery之杂记
//选中事件,放在初始化方法里面,toolbar下面 onSelect : function(rowIndex, rowData) { queryChannelFloor(rowIndex, rowD ...
- JavaScript中定时器的暂停和继续
对于JavaScript的定时器来说没有严格意义上的暂停和重启,只有清除停止,但是可以通过一些‘障眼法’实现 allChild[index].onclick = function(){//当点击目标且 ...
- datagrid的基本操作-增删改
1 ---恢复内容开始--- <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- out返回值的用法与用途
static void Main(string[] arr) { Console.WriteLine("请输入用户名"); string uname = Console.ReadL ...
- [转]Windows与Linux系统下的库文件介绍
什么是库 库文件是一些预先编译好的函数的集合,那些函数都是按照可再使用的原则编写的.它们通常由一组互相关联的用来完成某项常见工作的函数构成,从本质上来说库是一种可执行代码的二进制形式,可以被操作系 ...
- [Mugeda HTML5技术教程之7]添加动画
前一节我们讲述了怎么在新建的作品中添加元素,元素加好以后我们还想让他们动起来,来实现比较炫的效果.这节我们将要讲述怎么给元素添加动画.Mugeda动画是通过时间轴和帧来实现的.通过在时间轴上创建图层和 ...
- phpquery笔记
下载phpquery包 require('phpQuery/phpQuery.php');//加载 for($i=1168;$i<=10000;$i++){ phpQuery::newDocum ...