iOS Debug 和 release(hoc 及App Store)版本Crash错误总结

在iOS开发过程中,我们经常会碰到莫名其妙的crash,然后我们又很难定位到。
Debug版本:当我们遇到EXC_BAD_ACCESS crash错误,很有可能是由于我们引用的对象被释放,或者方法不存在,无法调用,这是由于内存操作错误引起的crash。当无法定位错误时,我们引入NSZombieEnabled模式。设置了NSZombieEnabled后,一个对象销毁时会被转化为 _NSZombie,设置NSZombieEnabled后,当你向一个已经释放的对象发送消息,这个对象就不会向之前那样Crash或者产生 一个难以理解的行为,而是放出一个错误消息,然后以一种可预测的可以产生debug断点的方式消失, 因此我们就可以找到具体或者大概是哪 个对象被错误的释放了。在XCODE 中设置NSZombieEnabled模式。点击菜单栏Product->Scheme->Edit Scheme->run->Argument->Environment variables ->+ 添加NSZombieEnabled 设为YES 重新运行。



ps:在应用发布时,记得去掉这一选项。



当我们遇到SIGNAL SIGABRT等错误时候,我们可以使用断点,断点可以分为条件断点及异常断点。断点的作用非常重要,它能够帮我们查看应用程序在给定时间点上的所在位置。
条件断点,顾名思义是指只会在特定条件下触发的断点:

异常断点。当我们遇到异常情况crash的时候,系统一般都会自动指向主方法中。当我们添加了异常断点后,就会再引发问题的地方中断。

Release 版本:程序的异常当我们处于调试阶段,通过上面方法一般都能过定位到错误。那当我们用发布app store版本或者分发版本 出现异常闪退的时候应该怎么定位错误呢?

大家在项目中一般都会加入log日志,我使用的是友盟的错误日志。当用户使用我们的应用crash时,友盟日志会收集这些错误信息,这样我们就可以通过dysm文件去定位到错误位置。

dysm文件是我们编译后会自动生成的,它是保存16进制函数地址映射信息的中转文件,我们调试的symbol 都在这文件中。这个文件很重要,我们每次发布版本都会保存对应.xcarchive文件。有了这个文件我们就可以在发布版中定位用户使用奔溃时的信息,而不需要通过该用户的设备log信息。那究竟应该怎么通过错误信息去定位呢?
下面介绍我使用umeng的错误日志定位错误:
one step 我们打开友盟的错误日志

图中蓝色标记的地址就是出错的函数内存地址。dsym uuId 我们需要找到我们对应的.archives 的文件

dsym uuid  : dwarfdumop --uuid xx.app.dSYM

app uuid :dwarfdump --uuid xx.app/xx

和错误文件中uuid 把.app 文件和dYSM 文件放到同一目录 一致我们就可以查询了:

xcrun atos -arch armv7 -o Wherecom.app/Wherecom 0x2a32f 亦可以用dwarfdump 命令查询

这样我们就可以定位到可能引起的错误函数名了。

网上也有热心的网友就这些命令写成了Mac工具附上下载地址, 但是还是建议大家常用命令 熟悉这些常见的命令.

http://download.csdn.net/download/marujunyy/7718089

时间: 2024-10-10 01:57:36

iOS Debug 和 release(hoc 及App Store)版本Crash错误总结的相关文章

iOS利用Application Loader打包提交到App Store时遇到错误The filename 未命名.ipa in the package contains an invalid character(s). The valid characters are:A-Z ,a-z,0-9,dash,period,underscore,but the name cannot start w

iOS利用Application Loader打包提交到App Store时遇到错误: The filename 未命名.ipa in the package contains an invalid character(s). The valid characters are:A-Z,a-z,0-9,dash,period,underscore,but the name cannot start with a dash,period,or underscore. 解决方法:在Archive之后得

iOS 打包上传发布到App Store上

在iTunes Connection里提交IPA,还是要预先设置好,打包好. 步骤:produc->Archive->submit to App Store,提交成功iTunes Connection的构建版本中就会有:  填完其他信息就可以提交了. 1.版本的问题: info.plist文件中就有2个版本的名称: Bundle versions string, short:用于itunes上显示的版本号,即对外的版本.(最多是3个部分组成即 x.y.z) Bundle version:内部项

iOS如何直接跳转到App Store

在iOS应用中如何直接跳转到AppStore里面?其实这个问题很简单,首先拿到你要跳转到的AppStore地址(URL) 例如:https://itunes.apple.com/us/app/中久便利订货版/id1159242974?mt=8 怎样获取苹果商店下载App的地址? 进入iTunes,点击iTunes Store,找到你要下载的应用,进入下载页面,点击图标,点击复制链接. 然后将 http:// 替换为 itms:// 或者 itms-apps:// 最后调用以下代码 [[UIApp

iOS 如何直接跳转到App Store

苹果iOS开发中如何直接跳转到AppStore里面? 昨晚一网友(说是在无限互联学习的)问:在iOS应用中如何直接跳转到AppStore里面?其实这个问题很简单,首先拿到你要跳转到的AppStore地址(URL) 例如:https://itunes.apple.com/cn/app/jie-zou-da-shi/id493901993?mt=8 然后将 http:// 替换为 itms:// 或者 itms-apps:// 然后调用以下代码 [[UIApplication sharedAppli

app store上传图片显示错误:未能创建 屏幕快照

在iTunes Connect中添加一个app后,添加屏幕快照时,按照要求的尺寸上传照片成功,但是在保存的时候提示"未能创建Screenshots for 4-inch iPhone5 and iPod touch(5th generation)Retina display的屏幕快照".] (图片来自网络) 其实就是保存失败, 图片不适合格式. 但排除1.尺寸大小 2.图片格式jpeg/png 我上传的格式是jpeg, 像素72dpi. 解决方案: 1. 网上搜索到解决方案是虽然尺寸大

发布IOS应用程序到苹果APP STORE完整流程

参考:http://blog.csdn.net/mad1989/article/details/8167529(xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)) http://www.ttlsa.com/dev/how-to-publish-iosapp-to-appstore/ (如何发布IOS应用程序到苹果APP STORE) 开发环境:xcode5.1.1 iphonesdk:7.1 开发机器:iMac 真机部署测试:apple个人开发者ID 向导: 必备ID

IOS上架App Store商店步骤

苹果官方在2015年05-06月开发者中心进行了改版,网上的APP Store上架大部分都不一样了,自己研究总结一下,一个最新的上架教程以备后用. 原文地址:http://www.16css.com/blog/knowledge/1300.html 1.1.前期工作 首先你需要有一个苹果的开发者帐号,一个Mac系统. 如果没有帐号可以在打开http://developer.apple.com/申请加入苹果的开发者计划.支付99美元每年,怎么申请网上有详细的介绍,在此不多做介绍. 如果你已经有了一

2016年最新苹果IOS上架App Store商店步骤

1.1.前期工作 首先你需要有一个苹果的开发者帐号,一个Mac系统. 如果没有帐号可以在打开http://developer.apple.com/申请加入苹果的开发者计划.支付99美元每年,怎么申请网上有详细的介绍,在此不多做介绍. 如果你已经有了一个IDP,打开 http://developer.apple.com/  并登录到苹果MemberCenter,见下: 登录后点击Certificates,Ldentifiers & Prlfiles,进入,所有证书相关的都在这里进行.如下图所示:

App Store 上架流程 2016

转自:http://www.jianshu.com/p/996672107eb1 App Store 上架流程(持续完善中...) 字数1482 阅读1980 评论15 喜欢50 说实话,公司要上架一个自己做的一个小项目.为了完成这个任务,菜鸟的 我一遍找资料一遍跟着做,一遍修改错误一遍查找解决方案.网上的资料大部分都是2015年以前的资料,资料有点不够过时,而且步骤配图也不是很详细,导致 我花费了整整4天的工作日只为实现appstore上架.哎呀,也是够蛋疼的,appstore上架的每个流程都