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

news2025/4/10 14:46:02

目录

  • 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.coloradmin.cn/o/2298943.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DeepSeek官方发布R1模型推荐设置

今年以来,DeepSeek便在AI领域独占鳌头,热度一骑绝尘。其官方App更是创造了惊人纪录,成为史上最快突破3000万日活的应用,这一成绩无疑彰显了它在大众中的超高人气与强大吸引力。一时间,各大AI及云服务厂商纷纷投身其中&…

STM32 ADC介绍(硬件原理篇)

目录 背景 AD转换器 采样与保持 量化 编码 AD转换器转换原理 DA转换原理 AD转换原理 1.逐次逼近型AD转换器 2.并联比较型AD转换器 编码器 同步D触发器和边沿D触发器 基本RS触发器 同步RS触发器 同步D触发器 边沿型D触发器(维持-阻塞D触发器&#xff…

pytest测试专题 - 1.2 如何获得美观的测试报告

<< 返回目录 1 pytest测试专题 - 1.2 如何获得美观的测试报告 1.1 背景 虽然pytest命令的报文很详细&#xff0c;用例在执行调试时还算比较方便阅读和提取失败信息&#xff0c; 但对于大量测试用例运行时&#xff0c;可能会存在以下不足 报文被冲掉测试日志没法归档 …

Bash 中的运算方式

目录 概述&#xff1a; 1. (()) 运算符 2. let 命令 3. expr 命令 4. $[] 直接运算 5. bc&#xff08;计算器&#xff0c;支持浮点数&#xff09; 6. awk&#xff08;强大的文本处理工具&#xff0c;也可计算&#xff09; 概述&#xff1a; Bash 本身只支持整数运算&am…

超纯水设备的智能化控制系统为用户带来安全简便的操作体验

随着信息技术的发展&#xff0c;智能化已经成为工业装备的重要发展方向之一。超纯水设备在这方面也走在了前列&#xff0c;配备了高性能的PLC控制系统及人机交互界面&#xff0c;实现了全方位的智能监控和自动化操作。本文将重点介绍该设备的智能化控制系统&#xff0c;探讨它如…

性格测评小程序03搭建用户管理

目录 1 创建数据源2 搭建后台3 开通权限4 搭建启用禁用功能最终效果总结 性格测评小程序我们期望是用户先进行注册&#xff0c;注册之后使用测评功能。这样方便留存用户的联系信息&#xff0c;日后还可以推送对应的相关活动促进应用的活跃。实现这个功能我们要先创建数据源&…

Linux-C/C++《七、字符串处理》(字符串输入/输出、C 库中提供的字符串处理函数、正则表达式等)

字符串处理在几乎所有的编程语言中都是一个绕不开的话题&#xff0c;在一些高级语言当中&#xff0c;对字符串的处理支 持度更是完善&#xff0c;譬如 C、 C# 、 Python 等。若在 C 语言中想要对字符串进行相关的处理&#xff0c;譬如将两个字符串进行拼接、字符串查找、两个…

基于若依开发的工程项目管系统开源免费,用于工程项目投标、进度及成本管理的OA 办公开源系统,非常出色!

一、简介 今天给大家推荐一个基于 RuoYi-Flowable-Plus 框架二次开发的开源工程项目管理系统&#xff0c;专为工程项目的投标管理、项目进度控制、成本管理以及 OA 办公需求设计。 该项目结合了 Spring Boot、Mybatis、Vue 和 ElementUI 等技术栈&#xff0c;提供了丰富的功能…

uni-app 学习(一)

一、环境搭建和运行 &#xff08;一&#xff09;创建项目 直接进行创建 &#xff08;二&#xff09;项目结构理解 pages 是页面 静态资源 打包文件&#xff0c;看我们想输出成什么格式 app.vue 页面的入口文件 main.js 是项目的入口文件 存放对打包文件的配置 pages 存放整…

【git-hub项目:YOLOs-CPP】本地实现03:跑自己的实例分割模型

本节博客,我们继续讲解,如何在cpu+windows上,跑通自己的实例分割模型。 目录 模型 类别名称 量化 导出模型 拉取最新代码 进入官网ultralytics 模型 该项目包括存储在 models 和 quantized_models 目录中的各种预训练标准 YOLO 模型: 模型类型模型名称标准模型yolo5…

OpenEuler学习笔记(三十):在OpenEuler上搭建3D建模环境

在OpenEuler上搭建3D建模环境&#xff0c;通常可以选择一些常见的3D建模软件&#xff0c;如Blender、FreeCAD等。以下以搭建Blender和FreeCAD这两款软件的使用环境为例&#xff0c;为你详细介绍搭建步骤。 搭建Blender 3D建模环境 1. 更新系统软件包 首先&#xff0c;确保系…

把 DeepSeek1.5b 部署在显卡小于4G的电脑上

这里写自定义目录标题 介绍准备安装 Ollama查看CUDA需要版本安装CudaToolkit检查Cuda是否装好设置Ollama环境变量验证是否跑在GPU上ollama如何导入本地下载的模型安装及配置docker安装open-webui启动open-webui开始对话 调整gpu精度 介绍 Deepseek1.5b能够运行在只用cpu和gpu内…

基于 Filebeat 的日志收集

在现代分布式系统中&#xff0c;日志数据作为关键的监控与故障排查依据&#xff0c;越来越受到重视。本文将深入探讨 Filebeat 的技术原理、配置方法及在 ELK&#xff08;Elasticsearch、Logstash、Kibana&#xff09;生态系统中的应用&#xff0c;帮助开发者构建高效、稳定的日…

Python教程108:针对面向对象Class类知识要点,源码示例再演示

类的基础结构&#xff0c;比如定义类、初始化方法__init__&#xff0c;然后实例化对象。然后是类的属性&#xff0c;包括实例属性和类属性。接着是方法&#xff0c;比如实例方法、类方法、静态方法的区别。还有继承和多态&#xff0c;这是面向对象的重要部分。可能还需要提到特…

如何在Excel和WPS中进行翻译

文档翻译我们可以用在线翻译工具&#xff0c;Excel工作表的翻译使用在线翻译工具就不是特别方便&#xff0c;那么如何快速进行翻译呢&#xff0c;我们今天介绍在不同的场景下如何利用翻译函数和Python程序来实现单元格的快速翻译。 一、在wps中进行翻译 WPS是我们常用的办公软…

DeepSeek从入门到精通:提示词设计的系统化指南

目录 引言&#xff1a;AIGC时代的核心竞争力 第一部分 基础篇&#xff1a;提示词的本质与核心结构 1.1 什么是提示词&#xff1f; 1.2 提示词的黄金三角结构 第二部分 类型篇&#xff1a;提示词的六大范式 2.1 提示语的本质特征 2.2 提示语的类型 2.2.1 指令型提示词 …

智能手表表带圆孔同心度检测

在智能手表的制造工艺中&#xff0c;表带圆孔同心度检测是确保产品品质的关键环节。精准的同心度不仅关乎表带与表体的完美适配&#xff0c;更直接影响用户的佩戴舒适度和产品的整体美观度。稍有偏差&#xff0c;就可能导致表带安装困难、佩戴时出现晃动&#xff0c;甚至影响智…

完美解决 error:0308010C:digital envelope routines::unsupported

查看专栏目录 Network 灰鸽宝典专栏主要关注服务器的配置&#xff0c;前后端开发环境的配置&#xff0c;编辑器的配置&#xff0c;网络服务的配置&#xff0c;网络命令的应用与配置&#xff0c;windows常见问题的解决等。 文章目录 windows电脑完美解决办法&#xff1a;设置说明…

MATLAB图像处理:Sobel、Roberts、Canny等边缘检测算子

边缘是图像中像素值剧烈变化的区域&#xff0c;反映了目标的轮廓、纹理等关键信息。边缘检测是图像分割、目标识别等任务的基础。本文将系统解析 六种经典边缘检测算子 的数学原理、实现方法及适用场景&#xff0c;并给出完整的MATLAB代码示例和对比分析。 1. 边缘检测基础 1…

【设计模式】02-理解常见设计模式-结构型模式

上一篇&#xff0c;我们介绍了设计模式-创建型模式的内容&#xff0c;并给出了相关代码示范。 这一篇我们接着介绍剩下的内容之一“结构型模式” 一、概述 结构型模式主要用于处理类或对象的组合&#xff0c;以获得新的功能或实现更灵活的结构。 二、常见的结构型模式 1、适…