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

简介: 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日志并进行多维度分析。
目录
相关文章
|
11天前
|
存储 分布式计算 监控
【Flume】Flume 监听日志文件案例分析
【4月更文挑战第4天】【Flume】Flume 监听日志文件案例分析
|
11天前
|
搜索推荐 Android开发 iOS开发
安卓与iOS系统的用户界面设计对比分析
本文通过对安卓和iOS两大操作系统的用户界面设计进行对比分析,探讨它们在设计理念、交互方式、视觉风格等方面的差异及各自特点,旨在帮助读者更好地理解和评估不同系统的用户体验。
35 1
|
11天前
|
Android开发 数据安全/隐私保护 iOS开发
安卓与iOS系统的发展趋势与比较分析
【2月更文挑战第6天】 在移动互联网时代,安卓和iOS系统作为两大主流移动操作系统,各自呈现出不同的发展趋势。本文将从技术角度出发,对安卓和iOS系统的发展方向、特点及未来趋势进行比较分析,以期为读者提供更深入的了解和思考。
49 4
|
11天前
|
存储 监控 NoSQL
【MongoDB 专栏】MongoDB 的日志管理与分析
【5月更文挑战第11天】MongoDB日志管理与分析至关重要,包括系统日志和操作日志,用于监控、故障排查和性能优化。合理配置日志详细程度、存储位置和保留策略,使用日志分析工具提升效率,发现性能瓶颈和安全性问题。日志分析有助于优化查询、调整配置,确保数据安全,并可与其他监控系统集成。面对日志量增长的挑战,需采用新技术如分布式存储和数据压缩来保障存储和传输。随着技术发展,不断进化日志管理与分析能力,以支持MongoDB的稳定高效运行。
【MongoDB 专栏】MongoDB 的日志管理与分析
|
11天前
|
存储 监控 关系型数据库
PHP编写的电脑监控软件:用户登录日志记录与分析
使用PHP编写简单但功能强大的电脑监控软件,记录用户登录日志并进行分析。代码示例展示了如何获取并存储用户IP地址和登录时间到数据库,然后进行登录数据的分析,如计算登录频率和常见登录时间。此外,还介绍了如何通过定时任务自动将监控数据提交到网站,以便实时监控用户活动,提升系统安全性和稳定性。
78 0
|
11天前
|
数据可视化
R语言两阶段最小⼆乘法2SLS回归、工具变量法分析股息收益、股权溢价和surfaces曲面图可视化
R语言两阶段最小⼆乘法2SLS回归、工具变量法分析股息收益、股权溢价和surfaces曲面图可视化
|
11天前
|
机器学习/深度学习 前端开发 数据挖掘
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断(下)
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
372 11
|
11天前
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断2
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
|
11天前
|
机器学习/深度学习 前端开发 数据挖掘
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
|
11天前
|
SQL 存储 监控
日志问题精要:分析与总结
该文档讲述了应用系统日志记录的重要性和规则。主要目的是记录操作轨迹、监控系统状态和回溯故障。日志记录点包括系统入口、调用其他模块、调用结束、出口和出错时。内容应遵循UTF-8编码,避免敏感信息,按INFO级别记录,及时、完整且安全。日志输出要控制频率和长度,不影响系统性能,并按策略备份和清理。日志等级分为DEBUG、INFO、WARN、ERROR和FATAL。日志文件应有明确目录结构,大小有限制,并定期清理。注意事项包括输出异常堆栈、避免打印对象实例的hashCode、选择合适的日志框架和格式,并支持动态修改日志级别。还要实现链路追踪,确保在多线程环境中正确记录日志。
28 0

热门文章

最新文章