当发布到iPhone上的应用程序Crash之后,iPhone会自动生成一个Crash Log(*.crash),这个文件包含了一些有用的调试信息,但对于堆栈,它只记录的函数地址,而无法显示函数名。函数名保存在一个叫dSYM的二进制文件中,即一个调试符号表文件。

首先,确保在release(Ad Hoc或者App Store)一个版本时,保存了对应的xxx.app和xxx.dSYM文件。

其次,验证xxx.crash、xxx.app和xxx.dSYM三者的uuid是否一致。

验证方法:

1)查看xxx.app的uuid。

[plain] view plaincopyprint?
  1. $ dwarfdump --uuid mobileguard.app/mobileguard

2)查看xxx.dSYM的uuid。

[plain] view plaincopyprint?
  1. $ dwarfdump --uuid mobileguard.app.dSYM/Contents/Resources/DWARF/mobileguard

3)xxx.crash。

上面两个UUID必须一样,而且必须跟Crash Log里面的UUID一致。打开Crash Log文件,在”Binary Images:”段中,YourApp后面的尖括号内的字符串就是UUID了。 
crash log uuid : armv7  <1dd5eb047491310f88cb7b1d7f61275c> /var/mobile/Applications/581404D9-FF06-455F-8251-846D41D18B40/

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。

[plain] view plaincopyprint?
  1. export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"

然后执行命令:

[plain] view plaincopyprint?
  1. symbolicatecrash m.crash mobileguard.app.dSYM > n.crash

转载:http://blog.csdn.net/jinzhu117/article/details/20615991

方法二:使用局部崩溃信息和.app文件

如果没有完整的.crash格式的崩溃文件,只有局部的崩溃信息,如下:

[plain] view plaincopyprint?
  1. Thread 0 Crashed:
    0   libobjc.A.dylib               0x00003ec0 objc_msgSend + 24
    1   MyApp                          0x000036d2 0×1000 + 9938

其中:0x000036d2为栈地址,0×1000为偏移量。

我们可以在控制台使用atos命令,解析出内存地址,此方法不需要.dsym文件。

[plain] view plaincopyprint?
  1. $ atos -o MyApp.app/MyApp -arch arm64(崩溃日志中标明的架构) -l 0×1000(偏移量) 0x000036d2(栈地址)
  2. 结果示例:__24-[MyApp initBase]_block_invoke.243 (in MyApp) (MyAppStart.m:286)

利用.dSYM和.app文件准确定位Crash位置相关推荐

  1. iOS- 利用.dSYM和.app文件准确定位Crash位置

    首先,确保在release(Ad Hoc或者App Store)一个版本时,保存了对应的xxx.app和xxx.dSYM文件. 其次,验证xxx.crash.xxx.app和xxx.dSYM三者的uu ...

  2. 使用pyautogui和inspect快速准确定位鼠标位置

    @[TOC] 1.前言 1.前言 最近在研究客户端软件进行Python自动化测试时,知道了pyautogui这个库,然后在csdn搜索相关资料时,看到某位老师写的文章,文章在此:女朋友让我深夜十二点催 ...

  3. dSYM-如何获取dSYM UUID并快速定位到已发布程序的crash位置(二)

    上一篇介绍到使用友盟统计分析,结合日志信息和.xcarchive文件和.dSYM工具快速定位crash位置.但如果项目中没有集成友盟统计分析或者其他第三方统计分析,我们便可以在项目中自己做一个日志的类 ...

  4. 中科院智能乒乓球桌登上Nature:检测球速跟踪路径,准确找到击球位置

    大数据文摘出品 来源:dailymail 编译:Stats熊 球类比赛中,经常能看到基于高速摄像头的鹰眼或者VAR(视频助理裁判),这类技术的应用可以避免裁判主观判断引起的争议,提高竞技体育的公平性, ...

  5. iOS 利用dSYM定位crash

    What is dSYM ? xCode 的每一次编译都会生成一个dsym文件,在其内部存储了16进制函数地址的映射. 在App实际执行的二进制文件中,是通过地址来调用方法,所以在App Crash ...

  6. macOS下利用dSYM文件将crash文件中的内存地址转换为可读符号

    一.使用流程 Windows下的程序运行崩溃时,往往可以利用pdb文件快速解析出程序崩溃的具体位置,甚至可以对应到源代码的具体行数.macOS下的symbolicatecrash也具备相应的功能.对应 ...

  7. 用计算机查找文件地址吗,如何快速搜索电脑里的文件( 快速准确定位和查找电脑文件位置的方法...

    今天给大家带来如何快速搜索电脑里的文件(,快速准确定位和查找电脑文件位置的方法,让您轻松解决问题. 怎样快速搜索电脑里的文件 如何快速准确定位和查找电脑文件位.我们在使用电脑的时候,经常需要进行一些操 ...

  8. vs2010利用map,cod文件定位崩溃代码行

     利用map,cod文件定位崩溃代码行 利用vs2010 新建一个空的控制台项目,添加文件gtg.cpp,内容如下 void crash() { inti=1; intj=0; i/=j; } i ...

  9. Android Studio App开发之下载管理器DownloadManager中显示、轮询下载进度、利用POST上传文件讲解及实战(附源码)

    运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一.在通知栏显示下载进度 利用GET方式读取数据有很多缺点比如1:无法端点续传 一旦中途失败只能重新获取 2:不是真正意义上的下载操作 无法设置参 ...

最新文章

  1. Kaggle第一人 | 详细解读2021Google地标识别第一名
  2. 南农沈其荣组Science子刊揭示番茄早期微生物组功能决定成年健康
  3. php 实现对称加密算法,PHP实现简单的对称加密和解密方法
  4. 关于举办第十五届全国大学生智能汽车竞赛浙江赛区选拔赛的通知
  5. 010_CSS后代选择器
  6. 嵌入式C语言基础(二)
  7. java连接到mysql_[操作系统]Java如何连接到MySQL数据库的
  8. Apache 2.4 编码GB2312中文乱码的问题
  9. 人体动作捕捉技术综述
  10. 06【五险一金解读】还有你的工资条哦?
  11. Android 7.1 设置不支持遥控操作?
  12. 中国移动一句话 苹果丢掉“两个诺基亚”_-Chaz-_新浪博客
  13. SQL:查找某个班级的人数并按班级人数多少进行排列,查找各班年龄最小的女生的班级号,学号,姓名,出生日期并按班级号升序排列
  14. 台式电脑开启休眠模式(win10)
  15. 2023华中科技大学计算机考研信息汇总
  16. 百度地图开发者使用教程
  17. python求级数的值_如何在Numpy中计算Fourier级数?
  18. Microsoft SQL Server 2000 简体中文企业版+SP4升级补丁
  19. 2019年度Infortrend渠道战略计划在杭州正式启动
  20. 单片机实验——改进型交通信号灯设计,交通信号系统是保障交通安全高效的重要设施,为了利于司机更好的判断,很多交通信号灯系统在原来的系统基础上设置了倒计时显示器。本实验利用7段数码管作倒计时显示器

热门文章

  1. manjaro 安装tensorflow 【CPU版本】 环境
  2. Python语言学习笔记
  3. 【转】android通讯录列表,A~Z字母提示view
  4. 每天一个linux命令(54):ping命令
  5. 4.1-大秦立国-ip演变
  6. spring学习笔记02-spring-bean创建的细节问题
  7. Java-绘图相关技术
  8. 计算机操作系统——死锁(产生的必要条件与处理死锁的四个关卡)
  9. db2增加decimal类型字段小数位_05725.16.1Hive中decimal类型字段.0结尾数据显示异常问题处理...
  10. 基于mycat的mysql_基于mycat实现mysql的读写分离