不使用 symbolicatecrash 解析崩溃堆栈

Unity iOS IL2CPP崩溃无符号堆栈解析与符号化还原实战指南 在移动应用开发中,崩溃分析是保障应用稳定性的关键技术环节。其核心原理在于将设备上报的原始内存地址映射回开发者可读的源代码位置,这一过程依赖于调试符号文件(如dSYM)提供的地址-符号映射关系。对于使用IL2CPP后端的Unity iOS项目,其构建流程会将C#代码转换为C++并编译为原生机器码,性能提升的同时也使得崩溃堆栈的符号化变得复杂。这项技术的工程价值在于能极大提升线上问题的定位效率,是移动开发质量保障体系的重要组成部分。典型的应用场景包括分析从App Store Connect或用户设备获取的原始崩 阅读详情
    如果  使用 symbolicatecrash 解析崩溃堆栈 不起作用,可以通过以下方式看看符号文件和堆栈是否是对应的:

        dwarfdump --uuid xxx.app
        dwarfdump --uuid xxx.app.dSYM
        grep "0x.*com.wihing.xxx .*<" NoSymbolsTestxxx.crash

    如果输出一样的uuid,那么就是对应的,此时symbolicatecrash应该可以正常解析符号。
    如果不一样,那么说明崩溃堆栈和符号文件对应不上,很可能是搞错版本,或者打包的时候有问题导致符号文件生成不正确。
    就算如此,我们还是可以尝试解析一下,通过一下几种方法:

    使用atos:
            
            atos  -arch armv7 -o [BinaryFile or dSYMFile] 0x431b 

    使用gdb:

            gdb appname.app.dSYM/Contents/Resources/DWARF/appname
            info line 0x431b

    使用dwarfdump:

            dwarfdump --lookup 0x431b --arch armv7 APP_BINARY_PATH

    以上使用的符号解析工具涉及到的地址,都是可执行文件上的相对于代码段的偏移地址。
    所以使用这些工具之前有两件事情需要了解:
    1、PIE pie编译选项
                开启这个编译选项的二进制文件其内部代码不使用绝对寻址,而是相对地址。
        这样就可以加载到内存的任意一个起始地址中运行,类似动态链接库的加载方式。
        这样做会提高安全性,不过我们不在这里展开讨论,包括实现的细节。
                关键是,开启这个选项会导致同一个程序每次崩溃的堆栈地址都会不一样。(iOS 4.3以上的系统开始支持PIE)
        
    2、算出相对地址
                其实公式很简单:
                    相对地址 = 内存地址 - 加载地址 + 二进制中的偏移地址
                关键是找出这几个地址:
                    内存地址:就是堆栈上的地址
                    加载地址:就是二进制文件加载到内存上的地址,可以从crash文件的binary image那一段看到。
                    二进制中的偏移地址:就是二进制文件中代码段的偏移地址,可以使用“otool -l”来查看。

                加载地址有时候不一定会有,不过还是可以算出来的,一般堆栈底端都是start或者ptread_start。
                相对地址可以算出符号,那么符号就可以算出相对地址。
                相对地址知道,就可以根据上面的公式反过来计算家在地址。
 



【IPAM】Netbox docker模式版本升级 NETBOX 是一个开源的网络资源管理系统,主要用于管理 IP 地址、机架、设备、接口等网络资源信息。下面是 NETBOX 的功能、优点和缺点的详细介绍。 阅读详情

相关推荐

2024年全国大学生电子设计竞赛A题_AC-AC变换电路并联运行

AC-AC变换电路并联运行(A 题)【本科组】

qq_74395263的博客 7836

linux解析ios崩溃日志,解析苹果审核反馈崩溃日志 .txt / .crash 文件

最近有朋友提到审核部门反馈的日志信息后缀名由.crash 改为了 .txt。我使用新的日志文件按照步骤解析,事实证明苹果的这次改动并没有影响,只要把.txt文件下载后更改后缀,然后继续使用下面的步骤即可解析成功;—— 2017.5.31前段时间提交App遭遇被拒,苹果审核部门反馈的日志信息无法直接定位错误原因,需要使用Xcode自带的 symbolicatecrash 工具来解 .crash文件;...

weixin_39679664的博客 567

矿卡CMP 170HX的AI推理性能优化实战

GPU计算在现代AI推理中扮演着核心角色,其并行计算架构特别适合处理神经网络的大规模矩阵运算。通过CUDA指令集优化和计算管线重构,可以显著提升硬件利用率,这在边缘计算和带宽敏感型任务中尤为重要。以NVIDIA CMP 170HX矿卡为例,通过禁用FMA指令和框架适配优化,其FP32性能可提升15.9倍,在Qwen2.5-1.5B模型的4-bit量化推理中达到A100同架构78%的解码速度。这种优化技术不仅让淘汰矿卡重获新生,更为边缘AI部署提供了高性价比解决方案,特别适合7B以下量化模型部署和多路视频分析

weixin_30432579的博客 628

linux解析ios崩溃日志,iOS 崩溃日志 Backtrace的符号化

iOS的崩溃日志配合dsym文件可以找到崩溃时的backtrace,这是解决崩溃的最重要的信息.如果是在同一台mac上打包, 导入crash log时候会自动将backtrace符号化,可以看到方法名, 文件名和行号但是,有时候发版的包不是在你的mac上打包的,xcode找不到对应的符号表, backtrace没能符号化如下所示:Last Exception Backtrace:0 CoreFou...

weixin_31520593的博客 632

Git系列(一)、Git基础教程【建议收藏】

Git一、Git简介1.1、什么是Git? 一、Git简介 1.1、什么是Git? Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目。 Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源代码的版本控制软件。 Git与常用的版本控制工具CVS、Subversion等不同,它采用了分布式版本库的方式,不用服务器端软件支持。 .........

一宿君 4万+

从理论到实践:利用FilterSolutions高效设计7阶椭圆低通滤波器

本文详细介绍了如何利用FilterSolutions软件高效设计7阶椭圆低通滤波器。文章从理论入手,对比了巴特沃斯、切比雪夫等经典滤波器特性,阐述了在要求高衰减陡度(如62dB抑制)和严格通带波纹(0.2dB)时,椭圆滤波器是最优选择。通过分步实战教程,指导读者完成从软件参数设置、性能验证到实际电路布局与调试的全过程,助力射频与高速数字信号处理工程师将理论转化为可靠设计。

jupi8的博客 559

linux下使用backtrace记录程序崩溃时的堆栈信息,并进行分析

在项目软件代码开发中,当软件代码量多了后,由于各种疏忽和编码审查不严格,导致代码中存在缺陷,程序运行后总是有各种异常出现,严重的导致程序崩溃,这个时候就期望能够在程序崩溃时,记录异常点相关的堆栈信息,用于对异常的分析,常见的方法有在系统中配置程序崩溃生成coredump文件,后续用gdb分析,这种方法需要了解gdb常用指令,并且涉及到修改了系统的一些配置,同时release版本下,有时候用gdb分析不一定有效,因此本文通过软件代码实现,简单记录程序崩溃的信息,主要使用到的是backtrace、abi::..

langxm2006的专栏 5940

WRFDA如何读取风云四号A 星的GIIRS数据?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1025

Linux中C语言崩溃所输出的异常堆栈是准确的么

以前总怀疑程序崩溃的异常堆栈可能不太准确,是否因为及时性的原因,程序还会跑飞一段时间,是否存在随机的可能,如果内存被破坏不是很厉害的情况,异常堆栈的输出将是非常准确的;其它场景,还需要进一步深入分析!

一把菜刀行江湖 873

92. SAP ABAP 系统里长文本 Long Text 的设计和读取函数 READ_TEXT 的详细讲解

SAP ABAP中的长文本(Long Text)是指在SAP系统中存储和管理较长文本信息的一种机制。长文本通常用于存储描述性信息、注释、说明等,这些文本信息可能超过了标准数据库表字段的长度限制。 长文本的作用主要有以下几点: 1. 更多的信息存储:长文本允许您存储和显示比标准表字段允许的更多信息。例如,产品描述、用户注释、维护计划等可能需要大量的文本来详细描述。 2. 更好的可读性:长文本提供了更好的文本格式化选项,可以改善可读性。用户可以使用段落、列表、字体样式等格式化文本,以便更容易地理解和阅读。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1996

069_死区效应对输出电压畸变的补偿思路

死区效应导致逆变器输出电压在过零点出现台阶畸变,引发THD升高。其本质是死区期间续流二极管钳位造成的非线性误差,与电流方向、负载大小、母线电压耦合。补偿需结合前馈(基于电流方向自适应调整偏置)与反馈(抑制残余谐波),关键在于准确判断电流方向(采用滞环滤波避免跳变)、合理设置补偿量(随负载动态调整),并注意补偿位置、极性及限幅防漂移。调试应通过差分探头、FFT频谱等手段验证效果,最终实现全负载范围内的低畸变输出。

2401_88858637的博客 21

崩溃堆栈信息是??的问题排查

崩溃堆栈信息是??的问题排查

John_ToStr的博客 527

Python爬虫实战:采集菜谱网站数据——以“下厨房”为例

随着互联网的发展,海量优质数据为各类应用提供了坚实基础。菜谱作为用户日常生活中需求极高的内容,丰富多样的菜谱数据不仅方便用户烹饪,也为美食推荐、营养分析等研究提供了数据支持。本文将围绕国内知名菜谱网站“下厨房”(https://www.xiachufang.com)展开,结合最新Python爬虫技术,详细讲解如何高效、规范地采集菜谱数据,包括菜谱名称、食材、步骤、评分、评论等丰富信息。全篇覆盖爬虫原理、框架选型、反爬应对、数据存储和简单分析,是学习爬虫实战的绝佳案例。菜谱标题作者信息菜谱图片。

2201_76125261的博客 1897

使用 symbolicatecrash 解析崩溃堆栈

https://blog.youkuaiyun.com/duanyipeng/article/details/46460245 一、先引用一位牛人的博贴: xcode解crashlog工具symbolicatecrash的使用 在xocde编译app的时候会同时生成一个以dsym(该app对应的符号表)作为后缀的文件,每个app对应一个符号表。手机连接到电脑,用organizer 可以看到Device ...

chenyijun的专栏 354

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

iOS崩溃堆栈信息的符号化解析

最近一段时间,在iOS开发调试过程中以及上线之后,程序经常会出现崩溃的问题。简单的崩溃还好说,复杂的崩溃就需要我们通过解析Crash文件来分析了,解析Crash文件在iOS开发中是比较常见的。但在跟开发者沟通过程中,云捕小编发觉大家对iOS的应用符号表还不是很清楚。现在网上有很多关于解析崩溃堆栈信息的符号化的博客,但是大多质量参差不齐,或者有些细节没有注意到。今天总结一下对iOS崩溃符号化的使用和技巧

网易云捕博客 5098

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

解析iOS应用的崩溃堆栈

一、源代码 如果自己是开发者,有源代码在手,那就最方便了,大家都知道 二、App崩溃 如果是安装到用户手机上的应用崩溃了,那该怎么办呢? 把应用崩溃的手机连到Xcode, Devices -> View Device Logs 就能看到该设备对应的所有crash 点击"Re-Symbolicate Log"...

骑着蜗牛找马儿 1648

解析崩溃日志的堆栈信息

一、概述 崩溃日志的堆栈信息很难阅读,我们可以对它进行解析。 解析前: 解析后: 解析需要三个文件: 1、symbolicatecrash 2、*.crash 3、*.app.dSYM 二、symbolicatecrash 可以通过命令行找到 find /Applications/Xcode.app -name symbolicatecrash -type f ...

tianxiawoyougood的博客 3359

如何解析iOS崩溃日志:从获取到符号化分析

作为iOS开发者,掌握崩溃日志解析是必备技能。本文从崩溃日志的基本结构开始,详细解释关键部分如进程信息、异常信息和线程回溯,并逐步讲解如何获取crash文件、定位dSYM文件,使用Xcode工具进行符号化分析,帮助提高调试效率。

2501_91591841的博客 1285

iOS 解析.IPS崩溃文件

iOS崩溃日志ips文件解析 iOS崩溃日志ips文件解析 一 简介   测试组的同事在进行稳定性测试时,通常会遇到一些崩溃,然后他们会将这些崩溃日志(一般是ips格式的文件)反馈给开发进行分析,但是这些ips文件中的内容通常是如下图这样的,都是一些十六进制的堆栈地址,如果仅仅根据这些堆栈地址,我们基本无法做任何事情,连最基本的崩溃定位都做不到。那么,在iOS开发中,还有一些其他的方法可以...

qq_30754211的博客 2162

iOS崩溃堆栈符号化,定位问题分分钟搞定!

最近一段时间,在跟开发者沟通过程中,萝莉发觉有些开发者对iOS的应用符号表还不是很清楚,除了咨询关于符号表生成、配置的问题以外,对Bugly崩溃分析需要配置符号表也存在疑问。 在这里,萝莉就给大家分享下关于iOS符号表的一些内容。 首先,进行常识“脑补”。   1. 符号表是什么? 符号表就是指在Xcode项目编译后,在编译生成的二进制文件.app的同级目录下生成的同名的.dSY

腾讯Bugly的专栏 5917

【iOS】崩溃收集和解析

背景 在日常开发中,app难免会发生崩溃。简单的崩溃还好说,复杂的崩溃就需要我们通过解析Crash文件来分析了,解析Crash文件在iOS开发中是比较常见的。 获取崩溃信息方式 在iOS中获取崩溃信息的方式有很多,比较常见的是使用友盟、云测、百度等第三方分析工具,或者自己收集崩溃信息并上传公司服务器。 下面列举一些我们常用的崩溃分析方式: 使用友盟、云测、百度等第三方崩溃统计工具。 自己实现应用内崩溃收集,并上传服务器。 Xcode-Devices中直接查看某个设备的崩溃信息。 使用苹果提供的Crash崩

BestpayTech的博客 2089

iOS崩溃日志ips文件解析

一 简介   测试组的同事在进行稳定性测试时,通常会遇到一些崩溃,然后他们会将这些崩溃日志(一般是ips格式的文件)反馈给开发进行分析,但是这些ips文件中的内容通常是如下图这样的,都是一些十六进制的堆栈地址,如果仅仅根据这些堆栈地址,我们基本无法做任何事情,连最基本的崩溃定位都做不到。那么,在iOS开发中,还有一些其他的方法可以帮助我们将这些堆栈信息转化为可视化的日志文件,在转化后的可视化日志文件中,我们可以清晰定位到我们的应用崩溃的位置,如下图2所示。   这个转化的过程有一个专业术语,叫符号化,就

liangyi的博客 6529
上一篇: UIView的alpha属性和hidden属性
下一篇: dispatch_get_current_queue 废弃
wihing
博客等级 码龄19年 55粉丝 36原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值