当前位置: 首页 > 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

相关文章:

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

目录 SO文件符号表对调试和分析的重要性调试方面分析方面 错误数据安装Logcat解释符号表设置符号文件路径生成解析 相关参考 SO文件 so 文件(Shared Object File,共享目标文件)和符号表紧密相关,它们在程序的运行、调试和分析过程…...

C#的DataTable类精简汇总

目录 一、DataTable概述 1.创建 DataTable 2.添加行 3.修改行 4.删除行 5.查询行 6.排序行 7.合并 DataTable 8.克隆 DataTable 9.复制 DataTable 10.使用 DataView 过滤和排序 11.使用 DataTable 的事件 12.使用 DataTable 的约束 13.使用 DataTable 的表达式列 …...

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…...

linux 板子的wifi模块连上路由器后,用udhcpc给板子wifi分配ip,udhcpc获取到ip,但没有写入wlan0网卡上

linux 板子的wifi模块连上路由器后&#xff0c;用udhcpc给板子wifi分配ip&#xff0c;udhcpc获取到ip,但没有写入wlan0网卡上 这里的问题是 /usr/share/udhcpc/default.script脚本有问题 用下面正确脚本&#xff0c;即可写进去 #!/bin/sh# udhcpc script for busybox # Copyr…...

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

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

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

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

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

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

如何使用CSS画一个三角形,原理是什么?

如何用 CSS 画一个三角形&#xff1f;原理和实战指南 一、核心原理 CSS 画三角形的本质是利用边框&#xff08;border&#xff09;的叠加特性。当一个元素的宽高为 0 时&#xff0c;其边框会以对角线形式相交&#xff0c;形成四个独立的三角形区域。通过控制某一边的边框颜色为…...

调用DeepSeek API接口:实现智能数据挖掘与分析

在当今数据驱动的时代&#xff0c;企业和开发者越来越依赖高效的数据挖掘与分析工具来获取有价值的洞察。DeepSeek作为一款先进的智能数据挖掘平台&#xff0c;提供了强大的API接口&#xff0c;帮助用户轻松集成其功能到自己的应用中。本文将详细介绍如何调用DeepSeek API接口&…...

iOS主要知识点梳理回顾-5-运行时方法交换

方法交换可以放在 load 或 initialize 方法中&#xff0c;也可以自己根据时机来空&#xff0c;比如开启某个开关后才需要交换方法。如果是在load中调用&#xff0c;交换工作会在类加载时&#xff08;程序启动&#xff09;自动调用&#xff1b;如果是在initialize中调用&#xf…...

基于若依开发的工程项目管系统开源免费,用于工程项目投标、进度及成本管理的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 存放整…...

本地部署DeepSeek + AnythingLLM 搭建高效安全的个人知识库

环境准备: 本地部署方案请参考博客:windows平台本地部署DeepSeek大模型+Open WebUI网页界面(可以离线使用)-CSDN博客 windows平台本地部署DeepSeek大模型+Chatbox界面(可以离线使用)-CSDN博客 根据本人电脑配置:windows11 + i9-13900HX+RTX4060+DDR5 5600 32G内存 确…...

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

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

【Qt】QObject类的主要功能

在 Qt 中&#xff0c;QObject 类是所有 Qt 对象的基类&#xff0c;提供了许多基础功能&#xff0c;使得 Qt 的对象系统能够有效地工作。它为其他类提供了核心的机制&#xff0c;比如信号和槽机制、对象树结构、内存管理等。 QObject 类的主要功能&#xff1a; 信号和槽机制&am…...

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

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

nsc account 及user管理

从安全角度&#xff0c;推荐使用sign 模式进行nats account及用户管理 把权限放到account level 用户密码泄露可以通过快速更换用户可以设置过期日期&#xff0c;进行安全轮换 此外通过nsc 管理用户和权限&#xff0c;可以统一实现全局管控&#xff0c;包括subject管控&#…...

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

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

Git子模块实战:大型后台管理系统模块拆分实践

案例背景 某企业级后台管理系统需要拆分为三个核心模块&#xff1a; 权限中心 (auth-center)&#xff1a;负责RBAC权限管理数据可视化 (data-visualization)&#xff1a;包含BI看板模块工作流引擎 (workflow-engine)&#xff1a;审批流程核心组件 每个模块由独立团队开发维护…...

【做一个微信小程序】校园事件页面实现

前言 为了进一步扩展校园事件页面的功能,我们可以添加 搜索、分类筛选 和 渐变卡片色 等特性。以下是详细的方案和源码实现。 扩展功能设计 1. 搜索功能 在页面顶部添加搜索框,用户输入关键词后,筛选出匹配的事件。2. 分类筛选 在页面顶部添加分类标签(如“全部”、“活动…...

基于 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是我们常用的办公软…...

zola + github page,用 workflows 部署

之前的Zola都是本地build之后&#xff0c;再push到github上&#xff0c;这种方式很明显的弊端就是只能在本地编辑&#xff0c;而不能通过github编辑&#xff0c;再pull到本地&#xff0c;缺乏了灵活性。因此将zola用workflows来部署。 repo地址&#xff1a;https://github.com/…...

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

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

org.apache.kafka.common.errors.TimeoutException

个人博客地址&#xff1a;org.apache.kafka.common.errors.TimeoutException | 一张假钞的真实世界 使用kafka-console-producer.sh向远端Kafka写入数据时遇到以下错误&#xff1a; $ bin/kafka-console-producer.sh --broker-list 172.16.72.202:9092 --topic test This is …...

DeepSeek免费部署到WPS或Office

部署到WPS - 通过OfficeAI插件接入&#xff1a; - 准备工作&#xff1a;安装最新版本的WPS Office软件&#xff1b;访问DeepSeek官网&#xff0c;点击右上角的“API开放平台”&#xff0c;登录账号&#xff08;若无账号需先注册&#xff09;&#xff0c;登录成功后&#xff0c;…...