美文网首页#iOS#HeminWon
iOS bug调试-xcode 符号化崩溃日志.crash 或

iOS bug调试-xcode 符号化崩溃日志.crash 或

作者: 夜未殇 | 来源:发表于2016-09-20 09:44 被阅读0次

经常遇到测试给我们提一个崩溃bug(非必现),然后符一个*.ips文件,打开里面全是内存地址,这时候就需要我们把这些地址符号化才能找到问题然后解决问题。对于.crash文件解决方法和*ips一样(ps:网上大部分讨论的是解决*.crash崩溃日志,我很纳闷,后来发现他们俩是一样的)。

解决问题之前先确认环境就是解决问题的前提

1.确保自己xcode对应的sdk版本比生成崩溃日志的测试设备的sdk版本高(相同也行,这个是因为系统库模块对应的地址是由手机中的sdk生成的不然这块内存就不能映射成功,只能映射出我们app模块对应的地址信息)

2.有打包对应的*app文件和对应的*.app.dSYM文件,是否对应可以从文件对应的uuid和日志中的uuid对应

app文件的uuid可以通过命令dwarfdump --uuid YourApp.app/YourApp生成

日志中的uuid可以从Binary Images:

0x100014000 - 0x101ccffff XXXX arm64  <28cead2455f83336b0be74c651bdd3d8>对应的这段内容找出 尖括号中

接着就是展现奇迹的时刻了。(方法一 xcode7.3symbolicatecrash路径改为

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

先执行

export DEVELOPER_DIR=`xcode-select --print-path`

定义了一个变量指向xcode的目录可能下面的命令会用到它,然后执行

/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash -v xxxxxxxxxxxxxxx.ips.txt 2>symbollicate.log >sybcontent.log

对应好自己的symbolicatecrash位置,-v是啰嗦模式会把执行命令的日志放到symbollicate.log 中里面可能有错误啥的映射失败的话可以看看分析。符号化后的日志就存在sybcontent.log中这里面就能看到函数地址对应的函数名

以上方式都是我从stackOverFlower中爬楼总结的。

现在可以简单地操作了(方法二)

打开xcode->Device 选中一个设备例如你的iPhone,点击右侧面板view device log ,然后吧*.ips更改为*.crash 然后拖进去,选中你的crash文件右键->ReSymbolicatecrash,如果你的电脑就是打包的电脑那应该就行了,如果不是打包的电脑你需要执行下mdimport  YOURFolder 确保你的app 和dSYM文件在这个文件夹中,对于这个问题我的理解是,xcode查找自动映射崩溃日志只会搜索自己打包的app,二方法一中的symbolicatecrash命令会全盘搜索你的磁盘,从生成的symbollicate.log文件中就可以看出来

既然有了简单粗暴的方法二,方法一还有用吗,当然有用方法二是apple加了对方法一的封装,但是symbolicatecrash工具目前是有bug的比如说你装了多个xcode,命名了xcode 2那你用这个xcode就映射不出来(xcode6.0.1,新版不知道会不会修复这个bug)这时候方法一就起作用了,映射不出来可以看日志找问题。

还有直接用atos 命令直接根据地址映射出来函数,但是这个没有检查库与日志里的库是否对应也就是说可能给你一个莫名其妙的方法名,方法一方法二最终也会用这个命令解析内存地址,但是前提是库对上的,对不上的它们不会做映射

到这里应该没问题了,但是bug不一定能解决。。。。

方法一详细讲解可以参考https://possiblemobile.com/2015/03/symbolicating-your-ios-crash-reports/

相关文章

  • iOS bug调试-xcode 符号化崩溃日志.crash 或

    经常遇到测试给我们提一个崩溃bug(非必现),然后符一个*.ips文件,打开里面全是内存地址,这时候就需要我们把这...

  • Xcode 崩溃日志符号化

    Xcode 崩溃日志符号化 符号化必备三样东西: Crash Log dSYM 符号集 symbolicatecr...

  • crash

    iOS Crash文件的解析(一)教你如何对ios崩溃(crash)日志做符号化IOS本地日志记录解决方案友盟统计...

  • iOS Crash 大解析

    iOS crash / 崩溃/ 异常 /捕获 1 崩溃日志(crash log) Xcode中 查看崩溃信息 手...

  • 一步搞定iOS崩溃日志解析

    iOS崩溃日志文件(.crash或.ips)解析 一步搞定: Xcode -> Window -> Devices...

  • iOS导出与符号化崩溃日志

    iOS符号化崩溃日志 经常(偶尔)QA在测试的时候,APP发生了crash,此时相比APP的崩溃,更加崩溃的是开发...

  • iOS Crash问题

    本文就捕获iOS Crash、Crash日志组成、Crash日志符号化、异常信息解读、常见的Crash五部分介绍。...

  • iOS 符号化闪退日志

    iOS分析崩溃日志 二 iOS应用崩溃日志分析 iOS崩溃crash大解析

  • iOS crash日志查看

    iOS crash日志查看 1.iOS开发中经常遇到程序闪退问题,关于崩溃日志产生原因: 1、应用中有Bug。​2...

  • iOS Crash 流程化0:概览

    Ref:iOS Crash 捕获及堆栈符号化思路剖析 iOS Crash 流程化:概览崩溃捕获Mach 异常捕获U...

网友评论

    本文标题:iOS bug调试-xcode 符号化崩溃日志.crash 或

    本文链接:https://www.haomeiwen.com/subject/dttoettx.html