iOS线上版本崩溃调试
来源:互联网 发布:迈达斯软件最新版本 编辑:程序博客网 时间:2024/06/10 06:05
背景介绍:
客服接到部分用户反映,好医网患者端在点击浏览“用户订单”功能时,程序发生闪退现象,且用户重新安装程序并更新程序和iOS系统至最新版本后,问题依旧没有解决。
现状:从用户的角度来看,在好医网患者端APP上发生交互,产生订单的用户,应该作为我们的真实有效用户,而解决当前线上崩溃的问题与否,直接关系到这部分真实用户的用户体验。按照线上统计分析,发生该问题的用户数量是2.79% 小计246次。
难点:在公司的开发环境中,无法重现上述问题,因此研发人员无法直接对代码进行调试,不能直接定位问题发生的原因。
思路:从线上崩溃日志中,找到闪退现象发生时,程序最后崩溃时刻的调用堆栈,尝试定位到崩溃发生的代码位置,然后回溯其发生过程,找到引起崩溃的原因。
于3.0.6版本上线后,线上版本能够正确跟踪崩溃报告,以下为崩溃报告追踪问题分析过程记录。
问题定位:
Appstore线上运行版本: 3.0.6
该处代码使用NSDictionary,用字面量创建字典数据结构,发生崩溃,查明原因是由于给出的值存在空值,造成NSDictionary创建即发生崩溃现象。
分析流程:
- 为毛存在空值
- 空值可能发生在user_id和userStatus上,追溯这两个值的传递过程。
- userStatus不可能发生空值,页面共计3个按钮,tag值传入userStatus分别为1,2,4
- 那么,user_id存在空值可能性,在普通用户名密码登陆方式中,服务器hy_user_id字段不可能为空(客户端验证逻辑),所以该登陆方式的user_id也不可能存在空值;
- 验证微信、QQ登陆方式的user_id是否有空值可能性,在微信和QQ的三方授权登陆过程中,服务器会对用户的hy_user_id进行验证,如果绑定的用户不存在hy_user_id这个值,无法绑定成功。
- 如果确实可能发生空值存在的逻辑,则判断空值,避免NSDictionary创建发生崩溃
- 在底层接口封装中的HYUserPreference类中,读取数据的方法中增加返回值是否为nil的判断,如果存在值为nil,则分配一个空的字符串对象,避免外层调用到nil,发生程序崩溃。
解决结果:
经过上述验证后,崩溃问题解决。
相关问题:
经后续对线上崩溃统计的持续跟踪发现,同样由于hy_user_id值为nil,导致用户在调用“健步走”功能模块时,也会发生程序崩溃的现象,经过本次bug修正之后,可以规避掉因为hy_user_id为空值,造成APP崩溃的现象。
0 0
- iOS线上版本崩溃调试
- iOS应用商店版本崩溃,调试不崩溃
- iOS 线上崩溃日志分析
- 利用友盟定位iOS线上版本项目的崩溃位置
- IOS 崩溃日志调试
- iOS崩溃调试
- iOS崩溃调试
- iOS崩溃调试
- iOS崩溃调试
- iOS崩溃调试
- iOS崩溃调试
- iOS 崩溃调试
- 关于iOS线上版本判断问题
- iOS更新学习(3) 线上崩溃日处理
- iOS app崩溃率,如何解决线上闪退
- iOS-四种查看线上崩溃日志的办法
- IOS调试技巧-崩溃定位
- ios运行程序崩溃调试
- 计算器事件
- jvm
- APP的六种loading加载样式,全在这
- 单链表逆序详解
- MySQL多实例
- iOS线上版本崩溃调试
- Impala优化基本方案
- 关闭Myeclipse更新
- ubuntu更新源
- Servlet 控制器
- [Android | Material Design] CollapsingToolbarLayout 使用+标签含义 笔记
- Check $M2_HOME environment variable and mvn script match
- do{ ... }while(false) 适用场景
- Android开发-Intent传递ArrayList-AndroidStudio