iOS 友盟崩溃日志分析——Backtraces

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: iOS 友盟崩溃日志分析——Backtraces

崩溃进程的每个线程都被捕获为回溯,记录进程终止时线程上运行的代码。回溯与使用调试器暂停进程时看到的类似。由语言异常引起的崩溃包括位于第一个线程之前的附加回溯,即最后一个异常回溯。


友盟崩溃日志原文:

Thread 0 Crashed:
0   libobjc.A.dylib                     0x00000001cd9cae20 objc_retain + [ : 16] 
1   XXXApp                              0x0000000103042080 ReachabilityCallback + [ : 40] 
2   SystemConfiguration                 0x00000001de6076c4 reachPerformAndUnlock + [ : 620] 
3   CoreFoundation                      0x00000001d46e622c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + [ : 28] 
4   CoreFoundation                      0x00000001d46f2614 __CFRunLoopDoSource0 + [ : 176] 
5   CoreFoundation                      0x00000001d467657c __CFRunLoopDoSources0 + [ : 340] 
6   CoreFoundation                      0x00000001d468beb8 __CFRunLoopRun + [ : 836] 
7   CoreFoundation                      0x00000001d46911e4 CFRunLoopRunSpecific + [ : 612] 
8   GraphicsServices                    0x000000020d4b1368 GSEventRunModal + [ : 164] 
9   UIKitCore                           0x00000001d6b40d88 -[UIApplication _run] + [ : 888] 
10  UIKitCore                           0x00000001d6b409ec UIApplicationMain + [ : 340] 
11  XXXApp                              0x0000000102470efc main + [main.m : 16] 
12  (null) 0x00000001f29b5948 0x0 + 8365234504
Thread 1 name:  JavaScriptCore libpas scavenger
Thread 1:
0   libsystem_kernel.dylib              0x0000000210cfc41c __psynch_cvwait + [ : 8] 
1   libsystem_pthread.dylib             0x0000000220f4006c _pthread_cond_wait + [ : 1232] 
2   JavaScriptCore                      0x00000001e7a03c70 0x1e7910000 + 998512
3   libsystem_pthread.dylib             0x0000000220f396cc _pthread_start + [ : 148] 
Thread 2:
0   libsystem_kernel.dylib              0x0000000210cfc050 __workq_kernreturn + [ : 8] 
1   libsystem_pthread.dylib             0x0000000220f38e44 _pthread_wqthread + [ : 364]


分析:

每个回溯的第一行列出线程编号和线程名称。出于隐私考虑,通过Xcode中的崩溃管理器提交的崩溃报告不包含线程名称。此示例显示了三个线程的回溯;线程0崩溃,并通过其名称标识为应用程序的主线程。

在线程号之后,回溯的每一行表示回溯中的堆栈帧。

0   libobjc.A.dylib                     0x00000001cd9cae20 objc_retain + [ : 16]


堆栈帧的每一列都包含有关崩溃时执行的代码的信息。下面的列表使用了上面示例中堆栈帧0的组件。

  • 0  堆栈帧编号。堆栈帧按调用顺序排列,其中帧0是执行停止时正在执行的函数。帧1是调用帧0中的函数的函数,依此类推。
  • libobjc.A.dylib  包含正在执行的函数的二进制文件的名称。
  • 0x00000001cd9cae20  正在执行的机器指令的地址。对于每个回溯中的帧0,这是进程终止时线程上执行的机器指令的地址。对于其他堆栈帧,这是在控制返回到该堆栈帧之后执行的第一条机器指令的地址。
  • objc_retain  在完全符号化的崩溃报告中,是正在执行的函数的名称。出于隐私考虑,函数名有时仅限于前100个字符。
  • [ : 16]   +后面的数字是从函数的入口点到函数中当前指令的字节偏移量。
    如果二进制文件有dSYM文件,则包含代码的文件名和行号。

在某些情况下,文件名或行号信息与原始源代码不符:

  • 如果源文件名为<compiler generated>,则编译器为该帧创建了代码,而代码不在源文件中。如果这是崩溃线程中的顶部帧,请查看前面的几个堆栈帧以获取线索。
  • 如果源文件的行号为0,这意味着回溯不会映射到原始代码中的特定代码行。这是因为编译器优化了代码,例如通过内联函数,并且在崩溃时执行的代码与原始代码中的一行不一致。在这种情况下,框架的函数名仍然是一个线索。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
27天前
|
开发工具 Android开发 Swift
安卓与iOS开发环境对比分析
在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统无疑是主角。它们各自拥有独特的特点和优势,为开发者提供了不同的开发环境和工具。本文将深入浅出地探讨安卓和iOS开发环境的主要差异,包括开发工具、编程语言、用户界面设计、性能优化以及市场覆盖等方面,旨在帮助初学者更好地理解两大平台的开发特点,并为他们选择合适的开发路径提供参考。通过比较分析,我们将揭示不同环境下的开发实践,以及如何根据项目需求和目标受众来选择最合适的开发平台。
34 2
|
8天前
|
安全 Android开发 数据安全/隐私保护
探索安卓与iOS的安全性差异:技术深度分析与实践建议
本文旨在深入探讨并比较Android和iOS两大移动操作系统在安全性方面的不同之处。通过详细的技术分析,揭示两者在架构设计、权限管理、应用生态及更新机制等方面的安全特性。同时,针对这些差异提出针对性的实践建议,旨在为开发者和用户提供增强移动设备安全性的参考。
|
15天前
|
安全 Linux Android开发
探索安卓与iOS的安全性差异:技术深度分析
本文深入探讨了安卓(Android)和iOS两个主流操作系统平台在安全性方面的不同之处。通过比较它们在架构设计、系统更新机制、应用程序生态和隐私保护策略等方面的差异,揭示了每个平台独特的安全优势及潜在风险。此外,文章还讨论了用户在使用这些设备时可以采取的一些最佳实践,以增强个人数据的安全。
|
15天前
|
缓存 监控 算法
分析慢日志文件来优化 PHP 脚本的性能
分析慢日志文件来优化 PHP 脚本的性能
08-06-06>pe_xscan 精简log分析代码 速度提升一倍
08-06-06>pe_xscan 精简log分析代码 速度提升一倍
|
1月前
|
IDE 开发工具 Android开发
安卓与iOS开发环境对比分析
本文将探讨安卓和iOS这两大移动操作系统在开发环境上的差异,从工具、语言、框架到生态系统等多个角度进行比较。我们将深入了解各自的优势和劣势,并尝试为开发者提供一些实用的建议,以帮助他们根据自己的需求选择最适合的开发平台。
29 1
|
2月前
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
|
2月前
|
算法 关系型数据库 程序员
第一周算法设计与分析:A : log2(N)
这篇文章介绍了解决算法问题"输入一个数N,输出log2N(向下取整)"的三种编程思路,包括使用对数函数和幂函数的转换方法,以及避免浮点数精度问题的整数逼近方法。
|
缓存 Unix iOS开发
iOS Crash 分析攻略
应用崩溃是影响 APP 体验的重要一环, 而崩溃定位也常常让开发者头疼。本文就讲讲关于 Crash 分析的那些事。
3629 0
iOS Crash 分析攻略
|
缓存 Unix 编译器
iOS Crash 分析攻略
应用崩溃是影响 APP 体验的重要一环, 而崩溃定位也常常让开发者头疼。本文就讲讲关于 Crash 分析的那些事。
iOS Crash 分析攻略
下一篇
无影云桌面