相关文章推荐
心软的小虾米  ·  Flutter ...·  2 周前    · 
打篮球的抽屉  ·  4.7 C++ Boost ...·  1 月前    · 
叛逆的马克杯  ·  java.io.IOException: ...·  4 月前    · 
面冷心慈的豆腐  ·  greenlet-2.0.1-cp36-cp ...·  5 月前    · 

一、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} 这种写法,大家有可能...