利用.dSYM和.app文件准确定位Crash位置
当发布到iPhone上的应用程序Crash之后,iPhone会自动生成一个Crash Log(*.crash),这个文件包含了一些有用的调试信息,但对于堆栈,它只记录的函数地址,而无法显示函数名。函数名保存在一个叫dSYM的二进制文件中,即一个调试符号表文件。
其次,验证xxx.crash、xxx.app和xxx.dSYM三者的uuid是否一致。
验证方法:
1)查看xxx.app的uuid。
- $ dwarfdump --uuid mobileguard.app/mobileguard
2)查看xxx.dSYM的uuid。
- $ dwarfdump --uuid mobileguard.app.dSYM/Contents/Resources/DWARF/mobileguard
3)xxx.crash。
Note:
在这之前,需要找到对应的app和dSYM文件。这两个文件是在后缀为.archive的文件中,在我的机器(Mac OS 10.9.1,Xcode5.0.2)上,.archive文件在“/Users/mikelin/Library/Developer/Xcode/Archives/”文件夹下对应的日期文件夹中,也可以从Xcode > Organizer > Archive 下找到对应的Archive包。
确保三者uuid一致以后,用symbolicatecrash工具生成易读的日志信息。
首先找到symbollicatecrash工具在哪里:
find /Applications/Xcode.app -name symbolicatecrash -type f
你会找到:
/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
方法一:使用.crash文件和dsym文件
先准备环境:
1)将symbolicatecrash文件拷贝到和那三个文件的同级目录,此方法不需要.app文件。
2)设置xcode DEVELOPER_DIR。
- export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
然后执行命令:
- symbolicatecrash m.crash mobileguard.app.dSYM > n.crash
转载:http://blog.csdn.net/jinzhu117/article/details/20615991
方法二:使用局部崩溃信息和.app文件
如果没有完整的.crash格式的崩溃文件,只有局部的崩溃信息,如下:
- Thread 0 Crashed:
0 libobjc.A.dylib 0x00003ec0 objc_msgSend + 24
1 MyApp 0x000036d2 0×1000 + 9938
其中:0x000036d2为栈地址,0×1000为偏移量。
我们可以在控制台使用atos命令,解析出内存地址,此方法不需要.dsym文件。
- $ atos -o MyApp.app/MyApp -arch arm64(崩溃日志中标明的架构) -l 0×1000(偏移量) 0x000036d2(栈地址)
- 结果示例:__24-[MyApp initBase]_block_invoke.243 (in MyApp) (MyAppStart.m:286)
利用.dSYM和.app文件准确定位Crash位置相关推荐
- iOS- 利用.dSYM和.app文件准确定位Crash位置
首先,确保在release(Ad Hoc或者App Store)一个版本时,保存了对应的xxx.app和xxx.dSYM文件. 其次,验证xxx.crash.xxx.app和xxx.dSYM三者的uu ...
- 使用pyautogui和inspect快速准确定位鼠标位置
@[TOC] 1.前言 1.前言 最近在研究客户端软件进行Python自动化测试时,知道了pyautogui这个库,然后在csdn搜索相关资料时,看到某位老师写的文章,文章在此:女朋友让我深夜十二点催 ...
- dSYM-如何获取dSYM UUID并快速定位到已发布程序的crash位置(二)
上一篇介绍到使用友盟统计分析,结合日志信息和.xcarchive文件和.dSYM工具快速定位crash位置.但如果项目中没有集成友盟统计分析或者其他第三方统计分析,我们便可以在项目中自己做一个日志的类 ...
- 中科院智能乒乓球桌登上Nature:检测球速跟踪路径,准确找到击球位置
大数据文摘出品 来源:dailymail 编译:Stats熊 球类比赛中,经常能看到基于高速摄像头的鹰眼或者VAR(视频助理裁判),这类技术的应用可以避免裁判主观判断引起的争议,提高竞技体育的公平性, ...
- iOS 利用dSYM定位crash
What is dSYM ? xCode 的每一次编译都会生成一个dsym文件,在其内部存储了16进制函数地址的映射. 在App实际执行的二进制文件中,是通过地址来调用方法,所以在App Crash ...
- macOS下利用dSYM文件将crash文件中的内存地址转换为可读符号
一.使用流程 Windows下的程序运行崩溃时,往往可以利用pdb文件快速解析出程序崩溃的具体位置,甚至可以对应到源代码的具体行数.macOS下的symbolicatecrash也具备相应的功能.对应 ...
- 用计算机查找文件地址吗,如何快速搜索电脑里的文件( 快速准确定位和查找电脑文件位置的方法...
今天给大家带来如何快速搜索电脑里的文件(,快速准确定位和查找电脑文件位置的方法,让您轻松解决问题. 怎样快速搜索电脑里的文件 如何快速准确定位和查找电脑文件位.我们在使用电脑的时候,经常需要进行一些操 ...
- vs2010利用map,cod文件定位崩溃代码行
利用map,cod文件定位崩溃代码行 利用vs2010 新建一个空的控制台项目,添加文件gtg.cpp,内容如下 void crash() { inti=1; intj=0; i/=j; } i ...
- Android Studio App开发之下载管理器DownloadManager中显示、轮询下载进度、利用POST上传文件讲解及实战(附源码)
运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一.在通知栏显示下载进度 利用GET方式读取数据有很多缺点比如1:无法端点续传 一旦中途失败只能重新获取 2:不是真正意义上的下载操作 无法设置参 ...
最新文章
- Kaggle第一人 | 详细解读2021Google地标识别第一名
- 南农沈其荣组Science子刊揭示番茄早期微生物组功能决定成年健康
- php 实现对称加密算法,PHP实现简单的对称加密和解密方法
- 关于举办第十五届全国大学生智能汽车竞赛浙江赛区选拔赛的通知
- 010_CSS后代选择器
- 嵌入式C语言基础(二)
- java连接到mysql_[操作系统]Java如何连接到MySQL数据库的
- Apache 2.4 编码GB2312中文乱码的问题
- 人体动作捕捉技术综述
- 06【五险一金解读】还有你的工资条哦?
- Android 7.1 设置不支持遥控操作?
- 中国移动一句话 苹果丢掉“两个诺基亚”_-Chaz-_新浪博客
- SQL:查找某个班级的人数并按班级人数多少进行排列,查找各班年龄最小的女生的班级号,学号,姓名,出生日期并按班级号升序排列
- 台式电脑开启休眠模式(win10)
- 2023华中科技大学计算机考研信息汇总
- 百度地图开发者使用教程
- python求级数的值_如何在Numpy中计算Fourier级数?
- Microsoft SQL Server 2000 简体中文企业版+SP4升级补丁
- 2019年度Infortrend渠道战略计划在杭州正式启动
- 单片机实验——改进型交通信号灯设计,交通信号系统是保障交通安全高效的重要设施,为了利于司机更好的判断,很多交通信号灯系统在原来的系统基础上设置了倒计时显示器。本实验利用7段数码管作倒计时显示器
热门文章
- manjaro 安装tensorflow 【CPU版本】 环境
- Python语言学习笔记
- 【转】android通讯录列表,A~Z字母提示view
- 每天一个linux命令(54):ping命令
- 4.1-大秦立国-ip演变
- spring学习笔记02-spring-bean创建的细节问题
- Java-绘图相关技术
- 计算机操作系统——死锁(产生的必要条件与处理死锁的四个关卡)
- db2增加decimal类型字段小数位_05725.16.1Hive中decimal类型字段.0结尾数据显示异常问题处理...
- 基于mycat的mysql_基于mycat实现mysql的读写分离