通过Android Logcat分析firebase崩溃

2024-01-25 08:20

本文主要是介绍通过Android Logcat分析firebase崩溃,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考:UnityIL2CPP包Crash闪退利用Android Logcat还原符号表堆栈日志 - 简书

一、安装Android Logcat插件

1、新建空白unity工程,打开PackageManager窗口,菜单栏Window/PackageManager

2、PackageManager中安装Android Logcat日志工具

3、安装AndroidLogcat完成

二、获取Create symbols.zip中的libil2cpp.sym.so文件

1.打包

在出包时勾选Create symbols.zip选项,在PlayerSettings面板中,出包选项从mono切换到il2cpp,然后Build包

出包完成,目录会有一个apk和一个zip的符号表压缩包

三、获取libunity.sym.so文件

在Unity编辑器中,libunity.sym.so文件通常位于Unity安装目录下的Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Symbols文件夹中。

具体路径是:{Unity安装目录}\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Symbols

请注意,这个路径是基于默认的Unity安装目录,并且可能因为不同的Unity版本或自定义安装路径而有所变化。如果你的Unity安装目录有所不同,你可以通过搜索文件名或在Unity编辑器中使用"Reveal in Finder"(在资源视图中右键点击文件,选择"Show in Explorer")等选项来找到libunity.sym.so文件的确切位置。

四、Crash日志解析

1.菜单栏打开AndroidLogcat工具,Window/Analysis/AndroidLogcat

2.配置符号表

右上角,点击Tools,点击Stacktrace Utility

点击Configure Symbol Path,然后弹出的配置界面点击+号

点击Pick Custom Location,选择刚刚解压的符号表文件夹

3.崩溃堆栈格式

找到一个firebase上的崩溃堆栈:

Fatal Exception: Tombstone: Version '2019.4.40f1 (ffc62b691db5)', Build type 'Release', Scripting Backend 'il2cpp', CPU 'armeabi-v7a'
Build fingerprint: 'TECNO/BE8-RU/TECNO-BE8:12/SP1A.210812.016/230105V142:user/release-keys'
Revision: '0'
ABI: 'arm'
Timestamp: 2024-01-24 10:11:45+0400
pid: 20495, tid: 20628, name: UnityMain  >>>  <<<
uid: 10182
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
Cause: null pointer dereferencer0  00000000  r1  00000000  r2  00000002  r3  00000001r4  06eca250  r5  44fb7fd0  r6  6eaf1af5  r7  00000020r8  7a5c083c  r9  a7e97710  r10 00000000  r11 7a5c07e0ip  7a5c0740  sp  7a5c07d0  lr  aabb9191  pc  5a864344#00 pc 0x1322344 libil2cpp.so (libil2cpp.0x1322344)
#01 pc 0x1322158 libil2cpp.so (libil2cpp.0x1322158)
#02 pc 0x1321f00 libil2cpp.so (libil2cpp.0x1321f00)
#03 pc 0x1321cf4 libil2cpp.so (libil2cpp.0x1321cf4)
#04 pc 0x1322690 libil2cpp.so (libil2cpp.0x1322690)
#05 pc 0x353445 libunity.so (libunity.0x353445)
#06 pc 0x35e337 libunity.so (libunity.0x35e337)
#07 pc 0x35db77 libunity.so (libunity.0x35db77)
#08 pc 0x35e043 libunity.so (libunity.0x35e043)
#09 pc 0x3542a9 libunity.so (libunity.0x3542a9)
#10 pc 0x3542c5 libunity.so (libunity.0x3542c5)
#11 pc 0x354461 libunity.so (libunity.0x354461)
#12 pc 0x4313bf libunity.so (libunity.0x4313bf)
#13 pc 0x43f191 libunity.so (libunity.0x43f191)
#14 pc 0xac07b base.odex (base.0xac07b)

AndroidLogcat可解析的崩溃堆栈格式为:

#xx  pc  32位地址(即8位16进制数,要去掉x,不足在前面补0)  /{ABI}/{xxx}.so

#00 pc 01322344 /arm/libil2cpp.so
#01 pc 01322158 /arm/libil2cpp.so
#02 pc 01321f00 /arm/libil2cpp.so
#03 pc 01321cf4 /arm/libil2cpp.so
#04 pc 01322690 /arm/libil2cpp.so
#05 pc 00353445 /arm/libunity.so
#06 pc 0035e337 /arm/libunity.so
#07 pc 0035db77 /arm/libunity.so
#08 pc 0035e043 /arm/libunity.so
#09 pc 003542a9 /arm/libunity.so
#10 pc 003542c5 /arm/libunity.so
#11 pc 00354461 /arm/libunity.so
#12 pc 004313bf /arm/libunity.so
#13 pc 0043f191 /arm/libunity.so

4.选择abi对应的符号表

ABI:arm=>armeabi-v7a        arm64=>arm64-v8a        (还有其他如x86、x86_64)

5.解析

这篇关于通过Android Logcat分析firebase崩溃的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/642644

相关文章

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Spring中Bean有关NullPointerException异常的原因分析

《Spring中Bean有关NullPointerException异常的原因分析》在Spring中使用@Autowired注解注入的bean不能在静态上下文中访问,否则会导致NullPointerE... 目录Spring中Bean有关NullPointerException异常的原因问题描述解决方案总结

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

python-nmap实现python利用nmap进行扫描分析

《python-nmap实现python利用nmap进行扫描分析》Nmap是一个非常用的网络/端口扫描工具,如果想将nmap集成进你的工具里,可以使用python-nmap这个python库,它提供了... 目录前言python-nmap的基本使用PortScanner扫描PortScannerAsync异

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超