flurry+atos crash代码定位

news2024/9/22 13:30:07

flurry 崩溃日志代码定位
用symbolicatecrash工具分析iOS Crash文件+通过atos符号化崩溃报告

1.写测试crash代码(方便检测最后crash是否定位正确 **MineViewController-xima方法-485行)
在这里插入图片描述
2.代码中flurry sdk打开crash追踪(默认为NO)
请添加图片描述
3.打包ipa(命名一个特别的版本号,防止记混,我用的4.3.0.1/4.3.0.2 正常线上使用4.xx.xx),真机安装ipa,执行crash,制造crash数据。flurry后台上传dsym文件(上传dsym文件方法可参考上一篇文章添加链接描述)可查看到crash数据制造成功
请添加图片描述
4.测试数据制造完成,开始crash反定位:桌面创建crash文件夹,文件夹中放入3个文件(PRODUCT_NAME.app.dSYM、PRODUCT_NAME.crash、symbolicatecrash)
请添加图片描述
1).应用的.dSYM文件(路径:/Users/用户名/Library/Developer/Xcode/Archives)或者(xcode-Window-Organizer-Archives-Show in Finder-显示包内容-dSYMs-PRODUCT_NAME.app.dSYM)请添加图片描述
2) .crash文件从Flurry后台直接export,找到对应的crash-Export-crashReport.txt 将crashReport.txt重命名 工程名.crash放到crash文件夹 请添加图片描述
请添加图片描述

也可从真机中.拿crash 文件可以:(xocde–>Window --> Devices and Simulators --> View Device Logs — > 右键 export Log导出到桌面文件夹crash)
请添加图片描述

3).工具symbolicatecrash:(终端:find /Applications/Xcode.app -name symbolicatecrash -type f 会把symbolicatecrash的路径打印出来,通过路径找到文件把它复制到新建的文件夹crash)

EC071066222A05M:~ test$ find /Applications/Xcode.app -name symbolicatecrash -type f
//文件路径
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

请添加图片描述
4).记得以上三个文件要确保关系正确,确定dSYM、app以及crash文件的关系的方法:
每一个xx.app, xxx.app.dSYM文件都拥有相应的uuid,crash文件也有uuid,只有三者uuid一至才表明之三者可以解析出正确的日志文件
查看xx.app文件的uuid的方法,在terminal中输入命令:
dwarfdump --uuid xxx.app/xxx (xxx工程名)
查看xx.app.dSYM文件的uuid的方法,在terminal中输入命令:
dwarfdump --uuid xxx.app.dSYM (xxx工程名)

而.crash的uuid位于,crash日志中的Binary Images:中的第一行尖括号内或者中间包含改udid不一定在第一行。如:
armv7 <8bdeaf1a0b233ac199728c2a0ebb4165>
请添加图片描述
请添加图片描述
5.生成 symbol.crash文件
终端今天此文件路径:
1.cd /Users/wangyan/Desktop/crash
2.export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
3. ./symbolicatecrash ./.crash ./.app.dSYM > symbol.crash(例如: ./symbolicatecrash ./M.crash ./Example.app.dSYM/ > symbol.crash )
( symbol.crash为自定义的输出文件名)
此时文件夹中会出现 symbol.crash我们认识的crash文件
请添加图片描述

7.通过atos分析符号化的 symbol.crash文件,定位到crash所在的具体代码行
找出 symbol.crash含有工程名字的那一行crash日志,cd到crash目录然后
xcrun atos -o projectName.app.dSYM/Contents/Resources/DWARF/projectName-l 0x1043b4000 -arch arm64 0x104437eb0
然后就可以参看到crash所在的类,方法 和代码行数(**MineViewController-xima-485行,验证正确)
请添加图片描述
请添加图片描述
如果是从flurry后台导出的crash日志,生成的symbol.crash 0x1043b4000地址可能会展示为工程名称,对应的地址在Binary Images中第一行
请添加图片描述
请添加图片描述

参考文件
相关博客文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/341644.html

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

相关文章

Prometheus 告警规则

Prometheus 告警规则 Prometheus官方内置的第三方报警通知包括&#xff1a;邮件、 即时通讯软件&#xff08;如Slack、Hipchat&#xff09;、移动应用消息推送(如Pushover)和自动化运维工具&#xff08;例如&#xff1a;Pagerduty、Opsgenie、Victorops&#xff09; Promethe…

Allegro如何批量快速修改复用好的模块操作指导

Allegro如何批量快速修改复用好的模块操作指导 在做PCB设计的时候,相同模块可以用reuse复用的功能,可以大大提升效率,但是模块需要修改的时候,其它模块也要跟着修改,逐个再去复用一遍比较费时间,Allegro支持批量快速修改复用好的模块 前提是相同模块必须是相同的mdd文件…

Ray和极客们的创新之作,2月18日来发现

所在论坛&#xff1a;数据库技术创新&云原生论坛分享时段&#xff1a;2.18 10:30-11:00分享主题&#xff1a;云原生数据库PieCloudDB &#xff1a;Unbreakable安全特性剖析分享嘉宾&#xff1a;王淏舟&#xff0c;拓数派资深研发工程师 由中国开源软件推进联盟PostgreSQL分…

Ansible的部署和命令模块

Ansible的部署和命令模块目录一、ansible 的概述1.1ansible简介1.2官方网站1.3ansible 的特点1.4ansible的工作机制1.5ansible的组成模块二、ansible部署2.1环境准备2.2Asible的安装三、ansible 命令行模块3.1command 模块3.2shell 模块3.3cron 模块3.4user 模块3.5group 模块3…

【java】40 个 SpringBoot 常用注解(建议收藏)

本文目录一、Spring Web MVC 注解Spring Web MVC 注解RequestMappingRequestBodyGetMappingPostMappingPutMappingDeleteMappingPatchMappingControllerAdviceResponseBodyExceptionHandlerResponseStatusPathVariableRequestParamControllerRestControllerModelAttributeCross…

王道操作系统笔记(七)——— 内存管理的基本要求和连续分配管理方式

文章目录一、内存的概念和作用二、内存管理的概念三、进程运行的基本原理和要求3.1 程序执行过程3.2 逻辑地址和物理地址3.3 程序的链接3.4 程序的装入3.5 内存保护四、覆盖与交换4.1 覆盖技术4.2 交换技术五、连续分配管理方式5.1 单一连续分配5.2 固定分区分配5.3 动态分区分…

解决ArcSWAT 2012.10_8.25安装 Error 1001 无法获得SWAT_HRU.dll程序集中安装程序类型。->无法加载一个或多个请求熟悉

问题描述 Error1001.无法获得G:SWATArcSWATSWAT_HRUsdll 程序集中的安装程序类型。->无法加载一个或多个请求的类型。有关更多信息&#xff0c;请检索LoaderExceptions 属性。 这是由于找不到对应的dll文件。 参考ArcSWAT的帮助文档后&#xff0c;发现该版本 对应的ArcGI…

revit中如何创建有坡度的排水沟及基坑?

一、revit中如何创建有坡度的排水沟? 先分享一张有坡度排水沟的族的照片给大家加深一下印象&#xff0c;有了一个粗略的直观认识&#xff0c;小编就来说说做这个族的前期思路吧。 一、前期思路&#xff1a; 1、 用拼接的方式把这个族形状拼出来&#xff0c;先用放样&#xff0…

焕新启航,「龙蜥大讲堂」2023 年度招募来了!13 场技术分享先睹为快

龙蜥大讲堂是龙蜥推出的系列技术直播活动&#xff0c;邀请龙蜥社区的开发者们分享围绕龙蜥技术展开&#xff0c;包括但不限于内核、编译器、机密计算、容器、储存等相关技术领域。欢迎社区开发者们积极参与&#xff0c;共享技术盛宴。往期回顾龙蜥社区技术系列直播截至目前已举…

rust 程序设计语言入门(一)

本文是阅读《Rust程序设计语言》的学习记录&#xff0c;配合视频《Rust编程语言入门教程》食用更佳 环境搭建 windows下载rustup_init.exe&#xff0c;点击安装&#xff0c;默认选择msvc的toolchain&#xff0c;一路default即可 解决下载慢的问题&#xff0c;在powershell中修…

2.7、进程调度的时机、切换与过程、方式

1、进程调度的时机 进程调度\color{red}进程调度进程调度&#xff08;低级调度&#xff09;&#xff0c;就是按照某种算法从就绪队列中选择一个进程为其分配处理机 进程在操作系统内核程序临界区\color{red}操作系统内核程序临界区操作系统内核程序临界区中不能\color{red}不能…

网络连通性测试(ping/tcp)

网络连通性首先要看ping是否能够通其次&#xff0c;测试TCP是否能通方式一、iperf3/iperf2可以测试tcp的连接一方作为server&#xff0c;一方作为client来连接&#xff0c;但是iperf3和iperf2不兼容server&#xff1a;iperf3/iperf2 -s 172.20.0.36client: iperf3/iperf2 -c 17…

亚马逊、沃尔玛卖家自养号退款经验和测评技术

今天给大家介绍下在做亚马逊、沃尔玛退款自养号中的经验&#xff0c;众所周知&#xff0c;自养号最重要的是养号的环境&#xff0c;包括系统的纯净度&#xff0c;下单的信用卡以及其他的一些细节。 环境系统市面上有很多&#xff0c;鱼龙混杂&#xff0c;比如什么lumi&#xf…

Java测试——junit的使用(2)

排序 我们同一个类下的多个用例的执行顺序是不确定的&#xff0c;如果需要指定固定的顺序&#xff0c;则需要在类上加这个注解 TestMethodOrder(MethodOrderer.OrderAnnotation.class)然后在想要第一个执行的用例上加上 Order(1)第二个执行的用例上注解&#xff1a; Order(…

爬虫圈,常见的加密手段,你应该了解一下

常见加密手段 实验介绍 本实验为大家介绍一下常见的加密技术&#xff0c;掌握之后&#xff0c;可以在反爬时加入各加密算法&#xff0c;从而提高爬虫采集难度&#xff0c;本实验为大家介绍三类加密&#xff0c;其一是消息摘要算法/签名算法&#xff0c;其二是对称加密&#x…

十四、MySQL 约束详解

文章目录一、定义完整性约束1.1 实体完整性1.1.1 主键约束1.1.2 自增列&#xff1a;AUTO_INCREMENT1.1.3 候选键约束或唯一约束(UNIQUE KEY)1.2 用户定义完整性1.2.1 非空约束1.2.2 CHECK约束1.2.3 DEFAULT约束1.3 参照完整性1.3.1 FOREIGN KEY 约束的作用1.3.2 主表(父表)从表…

趣味三角——第10章——(sinx)/x

第10章 函数(sinx)/x I call our world Flatland, not because we call it so, but to make its nature clear to you, my happy readers, who are privileged to live in Space. (我称我们的世界为平面国&#xff0c;这样称呼它并不是我的本意&#xff0c;而是为了让你们明…

【Linux】Rsync基于rsync-daemon认证的使用(rsync服务端与客户端发配置、排错思路、使用示例、优缺点及使用场景)

一、Rsync基于rsync-daemon认证的使用与 ssh 认证不同&#xff0c;rsync 协议认证不需要依赖远程主机的 sshd 服务&#xff0c;但需要远程主机开启 rsyncd 服务&#xff0c;本地 rsyncd 服务可不必开启。另外&#xff0c;rsync 协议认证不是直接使用远程主机的真实系统账号&…

【C++之容器篇】造轮子:list的模拟实现与使用

目录前言一、关于list1. 简介2. 成员类型二、默认成员函数1. 构造函数1. list()2. list(size_t n,const T& val T())和list(InputIterator first,InputIterator last)2. 拷贝构造函数3. 析构函数4. 赋值运算符重载函数三、迭代器1. 普通对象的正向迭代器2. const对象的正向…

多线程

标题创建多线程方式一&#xff1a;继承线程中常用方法和优先级多窗口卖票创建多线程方式二&#xff1a;实现Runnable接口多窗口卖票&#xff08;使用Runable方式&#xff09;进程的生命周期同步代码块解决实现Runable的线程安全问题方法一方法二使用同步方法处理实现Runable的线…