我是靠谱客的博主 满意猎豹,最近开发中收集的这篇文章主要介绍符号化,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.首先分析一下crash文件:

 

130433_3XR5_2621781.jpeg

1.a  Incident Identifier : 是崩溃报告的唯一标识符

CrashReporter Key: 是与设备标识相对应的唯一键值。虽然它不是真正的设备标识符,但也是一个非常有用的情报:如果你看到100个崩溃日志的CrashReporter Key值都是相同的,或者只有少数几个不同的CrashReport值,说明这不是一个普遍的问题,只发生在一个或少数几个设备上。

Hardware Model :标识设备类型。 如果很多崩溃日志都是来自相同的设备类型,说明应用只在某特定类型的设备上有问题。上面的日志里,崩溃日志产生的设备是iPhone 4s。

Process:对项目的操作权限,上面的是可读可写

Path:崩溃文件的路径

Identifier:项目标识符,就是Bundle Id

Version:版本号

。。。。。。。

2.a 这部分给出了一些基本信息,包括闪退发生的日期Date/Time和时间Launch Time,设备的iOS版本OS Version等。

3.a Exception Type:异常的类型。
Exception Codes :异常错误码
Termination Reason:闪退的原因,比如常见的数组越界啊,什么的。
Triggered by Thread:出现问题在哪个线程,这个比较重要,首先确定在哪个线程中出了问题,然后再去定位。

4.a 这部分提供应用中所有线程的回溯日志。 线程调用的一些,堆栈信息,压根看不懂,所有需要进行符号化处理。

 

 

2.如何将文件一一对应(检查dsym和app以及crash文件是否一致)

AppName代表app的名字,.app文件需要将ipa文件显示包内容,.app文件在payload文件夹下

 

dSYM

$ dwarfdump --uuid AppName.app.dSYM/
UUID: 8FFE6FA9-5DC6-3D54-8C16-4D267AA315A5 (arm64) AppName.app.dSYM/Contents/Resources/DWARF/AppName
  •  

.app

$ dwarfdump --uuid AppName.app/AppName
UUID: 8FFE6FA9-5DC6-3D54-8C16-4D267AA315A5 (arm64) AppName.app/AppName
  •  

.crash 文件

$ grep "AppName arm64" t.crash
0x100020000 - 0x10123bfff AppName arm64  <8ffe6fa95dc63d548c164d267aa315a5> /var/containers/Bundle/Application/A9D19DFA-9553-412B-A124-F07B0DEE01CF/AppName.app/AppName

 

3.符号化crash文件

注:如果有.xcarchive文件(打包时从包列表进入文件寻找)直接拖入设备即可

注:如果应用ipa包就是在自己的机器上打的,直接把.crash文件拖进Devices -> view device log 即可

find  /Applications/Xcode.app -name symbolicatecrash -type f

方法1:

需要使用Xcode符号化 crash log,你需要下面所列的3个文件:

1. crash报告(.crash文件)

2. 符号文件 (.dsymb文件)

3. 应用程序文件 (appName.app文件,把IPA文件后缀改为zip,然后解压,Payload目录下的appName.app文件), 这里的appName是你的应用程序的名称。

 

把这3个文件放到同一个目录下,打开Xcode的Window菜单下的organizer,然后点击Devices tab,然后选中左边的Device Logs。

 

然后把.crash文件拖到Device Logs或者选择下面的import导入.crash文件。

 

这样你就可以看到crash的详细log了

 

方法2:使用命令行工具symbolicatecrash

find /Applications/Xcode.app -name symbolicatecrash -type f 

设置环境:export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"  

先用这个命令找到symbolicatecrash位置:/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

把crash文件和dysm文件以及app文件放到一起执行:

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash acrash.crash AppName.app > out .log 即可以

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash acrash.crash AppName.app.dSYM >n.crash也可以

 

 

 

 

转载于:https://my.oschina.net/HeroOneHY/blog/1569976

最后

以上就是满意猎豹为你收集整理的符号化的全部内容,希望文章能够帮你解决符号化所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(82)

评论列表共有 0 条评论

立即
投稿
返回
顶部