一、dSYM
什么是dSYM
dSYM实际上放的是程序在编译过程中收集的符号表的信息,其实质上保存符号表数据的是二进制的DWARF(DebuggingWith Arbitrary Record Formats)文件。可以用dwarfdump命令读取出一些可读的信息。
设置Xcode工程生成dSYM
Build Setting中设置Debug Information Format 为 DWARF with dSYM File
Build Setting中设置Generate Debug Symbols 为 Yes
小技巧:当本地调试不需要dSYM的时候,可以设置XCode不生成dSYM,这样做的好处是使得XCode编译运行的速度更快(少了生成dSYM的时间)。
查看dSYM的UUID信息
这个步骤很关键,这是确定dSYM是否可用的唯一标识,用来与崩溃日志进行配对。
注意:
1. 只要代码是相同的,编译后产生的dSYM都有一样的UUID,也就意味着你的应用出现闪退,而dSYM丢失的情况,只要工程还在,代码不变就可以重新编译生成dSYM,用来解析崩溃日志。
2. dSYM的目录可以重命名,但是.dSYM的后缀不能去掉,不能放在.dSYM的目录文件夹中。
二、崩溃日志
移动设备产生崩溃日志的情况
应用违反操作系统的规则,主要包括三种情况,watchdog超时、用户强制退出和低内存终止。
应用中有bug,这是我们应该关心的情况。
崩溃日志的获取途径(很关键)
手机端:不同的iOS版本在不同的目录下,我的iOS11.2在 设置->隐私->分析->分析数据,可以看到很多不同的.ips文件。
电脑端:使用iTools的工具,选择工具箱栏目,有一个崩溃日志的选项,文件名的格式是”
应用名-闪退时间.ips
“。
闪退收集框架:如果在应用中接入了闪退收集的框架,或者自己实现了闪退收集的模块,那就还可以通过这些模块获取闪退的日志信息。
了解崩溃日志的文件结构
问题的产生
这个问题一般发生在项目比较大,OO使用良好,泛型继承用的较多的时候。第一次真机测试时,项目终于进入真机测试阶段,之前都是在Unity编辑环境下开发测试,运行的都很良好,信心满满的打包安装,结果
闪
退
。。。,各种代码调试,跟踪都没什么线索。这怎么办?问题很可能出在了AOT的设置上。
这个通常是因为你的程序编译的时候给 trampoline 分配的空间太小,而你的程序中又大量使用了泛型、泛型方法调用和接口实现导致的。具体的解决方法就是在 Unity3D 的编译选项 Player Setting 中有一个 AOT Compilation Options 条目,在这个选项条目中加上
Flutter 项目运行在
iOS
手机 多字
iOS
14及以上版本 ,因为 Flutter 官方对
iOS
14 进行了调整
解决方法:
1.项目名中文改英文(亲测 无太大用处一般默认为Runner)
在Xcode里,选择当前项目的TARGETS->BuildSetting -> Packaging -> Product Name,将中文的命名改成英文,flutter项目建议直接改成Runner。
2.更改XCode编译模式:(可用)
使用Release模式编译,这个时候Flutter编译
iOS
应用程序在上线过程中可能会出现各种
闪
退
,如果APP经常出现
闪
退
会让一部分用户选择卸载,这样会带来很大的损失,下图(来自于Bugly)可以看出APP出现崩溃后会带来的影响。
对于这些崩溃信息怎么
收集
分析就是一个很大的问题,通过解析Crash文件可以帮助我们改善APP,修复bug等。
收集
Crash信息的方式有很多,比较常见的是使用第三方服务,比如友盟、百度统计、Bugly等。(下图为Bug
最近几天,项目中在增加推送功能,选用的极光推送SDK,相信大家也都用过,官方文档的集成步骤很详细,集成也很容易。但是这跟今天的主题有什么关系呢??? 黑人问号???别急,下面就来说说我今天的遭遇。坑~~~
话说,由于
iOS
10之后,苹果对推送进行了重大更新,主要是新增了 User Notifications Framework
框架, 具体信息可以查看苹果官方文档,这里就不多解释了。于是我就突
Flutter是什么?Flutter是Google一个新的用于构建跨平台的手机App的SDK。写一份代码,在Android 和
iOS
平台上都可以运行。下面看下Flutter项目在
iOS
14 启动崩溃的问题及解决方法崩溃现象在
iOS
14发布之后,运行APP就出现
闪
退
,和机型没关,只要是
iOS
14就必
闪
退
崩溃分析1、启动就
闪
退
,多起几次可能有一次没有问题。2、启动后到某个页面卡死(必卡跳不过)根本...
在开发过程中往往会遇见有个别用户或者测试人员反馈app的
闪
退
现象,而项目一般集成的统计
闪
退
的第三方库是笼统的统计了所有的
闪
退
信息,无法去定位某一个用户提出的某一个时间点的某一个
闪
退
问题,于是乎这个时候需要我们能快速的去获取指定用户提出的指定
闪
退
,并能够解析
闪
退
日志,快速的定位到问题。下面将自己的做法大概的做个总结(可能还有别的方法,但是我觉得下面讲述的方法已经足够了)。...
前言该文章来自于chh大佬的投稿,为他打call为何需要node调试?熟练使用node调试能让你在日常开发中更快的定位问题所在的代码,提高开发效率如何进行node调试? node调试方式...
为保障线上 App 的用户体验,我们一般都会对线上 App 的 crash 率做实时监控,一旦检测到 spike,可以即刻调查原因,但这一切的前提是 crash 日志能够准确上报。crash 日志上报有两个难点:crash handler 安装之前的代码要绝对稳定如果日志采集器还没成功启动就 crash 了,自然什么日志也无法采集到。这一点并没有太多技巧可言,只能严格限制 handler 启动之前...
闪
退
流程
闪
退
日志上传
在APP开发中,对于开发者或者使用者最不能接受的bug就是APP崩溃,所以对于APP
闪
退
的问题追踪非常重要,有利于尽快的修复这个问题。现在有许多的第三方崩溃日志统计服务sdk,如:Bugtags,腾讯的Bugly,友盟等。这些服务商提供了非常便捷的集成方式。关于如何使用这些工具,请看
在
iOS
开发中经常需要靠记录日志来调试应用程序、解决崩溃问题等,整理常用的日志输出和崩溃日志分析。最新更新:2018-11-30基于CocoaLumberjack 的 Swift使用封装库一、崩溃的捕获1、崩溃日志产生原因1、应用中有Bug。2、Watchdog超时机制3、用户强制
退
出4、低内存终止5、其他违反系统规则的操作,大部分是内存问题发生崩溃,系统会生成一份崩溃日志在本地,或者上传IT...
最近线上出了一次事故, 在
退
出登录时, 正常的用户在
退
出登录时会清除成功userDefault中的数据,一般只会crash一次,但是有个用户比较特殊, 出现了连续
闪
退
, 主要原因就是userDefault中的数据没有清除成功, 下次再启动app, 从userDefault中获取数据还认为是登录中的状态, 然后再次crash, 这样就陷入了死循环,导致只要打开app就会crash, 只有卸载重装才能解决问题.
先来说说为什么这个用户比较特殊, 这是一个公司内部的用户, app一直都是覆盖安装, 随着版本的迭
1.通过key值得到安全的value值,字符串(NSString)或数组(NSArray)数据为NUll 崩溃
以下
收集
的崩溃原因,大家会觉得怎么也不会犯这错误,举个例子,我下面所写的 NSDictionary *dic = @{@“key”: nil}; 大部分可能认为他会崩溃,非常小心, 如果是NSDictionary *dic = @{@“key”: str} 这种写法,大家有可能...