当前位置: 首页 > article >正文

Unity崩溃后信息结合符号表来查看问题

目录

  • SO文件
    • 符号表
    • 对调试和分析的重要性
      • 调试方面
      • 分析方面
  • 错误数据
  • 安装Logcat
  • 解释符号表
    • 设置符号文件路径
    • 生成解析
  • 相关参考

SO文件

so 文件(Shared Object File,共享目标文件)和符号表紧密相关,它们在程序的运行、调试和分析过程中扮演着不同但又相互配合的角色。

符号表

符号表是.so 文件的关键辅助信息:.so 文件包含了可执行代码、数据以及其他相关信息,是程序在运行时动态链接和加载的对象。符号表则存储了.so 文件中函数、变量等符号的相关信息,如名称、类型、地址等。在程序运行时,动态链接器需要借助符号表来解析.so 文件中函数和变量的引用。例如,当一个程序调用.so 文件中的某个函数时,动态链接器通过符号表找到该函数在.so 文件中的实际地址,从而实现正确的函数调用,确保程序能够顺利运行。

对调试和分析的重要性

调试方面

在调试包含.so 文件的程序时,符号表不可或缺。调试器(如 GDB、IDA 等)利用符号表将程序运行时产生的地址信息(如栈回溯中的函数地址)转换为有意义的函数名和代码行号。对于 Unity 开发中出现问题的.so 文件(如日志中涉及的libil2cpp.so和libunity.so),通过符号表,开发人员可以快速定位到问题函数所在的源文件位置,查看函数参数和局部变量的值,便于分析程序出错的原因,提高调试效率。

分析方面

在进行性能分析或逆向工程分析时,符号表能帮助分析人员理解.so 文件的内部结构和功能。性能分析工具可以借助符号表将性能数据(如函数执行时间、调用次数)与具体的函数名关联起来,确定性能瓶颈所在。在逆向工程中,虽然符号表会增加一定的分析难度,但对于开发者自身分析代码逻辑、发现潜在安全漏洞也有帮助,同时在代码混淆时,符号表可配合保留关键信息,辅助后续的必要分析。

错误数据

举例说明
在查看Unity打包的日志看到崩溃日志信息,其中一段是这样的。

在这里插入图片描述

这些 native: #00 pc xxxxx 地址对应的函数不知道是什么,其实我们的Unity就可以看,我们需要安装一个Unity Android Logcat包。

安装Logcat

我们点击Unity、Window、Package Manager,打开包管理器安装Android Logcat
在这里插入图片描述
安装好之后在菜单的Window、Analysis、Android Logcat打开
在这里插入图片描述
通常我们连接安卓设备可以查看设备的Logcat,不用专门开Android Studio。

这个工具还可以解释符号表。

解释符号表

在这里插入图片描述
我们通过右上角Stacktrace打开。
Original的内容里,你可以把崩溃数据复制上来。
在这里插入图片描述

设置符号文件路径

右边的Configure Symbol Paths里你可以添加你生成apk时候生成的symbols文件,通常是libil2cpp.so文件。
在这里插入图片描述

这个文件通常在打包apk的时候生成,如果是Unity里打包可以勾选生成symbols.zip
在这里插入图片描述
打包结束后可以看到压缩文件夹,解压后可以看到so文件。
在这里插入图片描述

生成解析

最后我们点击Resolve Stacktraces按钮就解释了
在这里插入图片描述
这样就可以看到调用了什么函数了,方便我们能够锁定问题。

相关参考

https://docs.unity3d.com/6000.0/Documentation/Manual/android-symbols.html


http://www.kler.cn/a/544324.html

相关文章:

  • 计算机网络-MPLS转发原理
  • 【STM32】通过L496的HAL库Flash建立FatFS文件系统(CubeMX自动配置R0.12C版本)
  • 热更图片方案
  • 8K样本在DeepSeek-R1-7B模型上的复现效果
  • 回归新系列——网络安全实操干货系列——Kali Linux新版本——Kali Purple实操指南——信息收集篇1——Nmap(其一)
  • 分享在职同时准备系统分析师和教资考试的时间安排
  • 18vue3实战-----封装hooks
  • 论文概览 |《Cities》2024.12 Vol.155(上)
  • 2100年芜湖人的一天:张明的生活剪影
  • Day94:Re模块
  • 计算机网络,大白话
  • vue项目网页图标修改
  • GAEA的技术架构与系统集成 撸空投
  • 爬虫获取数据后,如何处理数据以提高分析效率?
  • 旅游行业内容管理系统CMS提升网站建设效率与体验
  • pytorch引用halcon写数据集
  • LARA:多语言多轮对话意图分类的新突破
  • [MySQL]1-MySQL结构与运行原理
  • 使用EVE-NG-锐捷实现DHCP
  • A001基于SpringBoot实现的小区物业管理系统
  • 【设计模式】【行为型模式】观察者模式(Observer)
  • Docker 入门:什么是 Docker 及其核心概念
  • 机器学习:线性回归
  • excel里的函数技巧(持续更新中)
  • route 与 router 之间的差别
  • 深挖vue3基本原理之一 —— 响应式系统(Reactivity System)