概述
2019独角兽企业重金招聘Python工程师标准>>>
1.首先分析一下crash文件:
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
最后
以上就是满意猎豹为你收集整理的符号化的全部内容,希望文章能够帮你解决符号化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复