美文网首页iOS知识收录iOS开发指南iOS 砖家纪实录
Xcode崩溃日志分析工具symbolicatecrash用法

Xcode崩溃日志分析工具symbolicatecrash用法

作者: a18bbfaeae63 | 来源:发表于2015-02-09 12:48 被阅读17524次
老规矩

什么是symbolicatecrash


symbolicatecrash是Xcode自带的一个分析工具,可以通过机器上的崩溃日志和应用的.dSYM文件定位发生崩溃的位置,把crash日志中的一堆地址替换成代码相应位置。

为什么要用symbolicatecrash


开发者调试错误只需要有真机,并
且连接到xcode上,就可以跟踪发现错了。
但是如果你的APP不是安装在你自己的真机上,比如你的APP发布到App Store(客户下载后你如何跟踪你的APP在他们的机器上?)这时候就要用到symbolicatecrash。
当一款APP软件在IOS设备上崩溃的时候,一份“crash report”将会自动创建并且存储在设备上。crash report描述了APP崩溃的日志。在大多数情况下,包括对每个线程执行一个完整的堆栈跟踪,查看该日志对于APP崩溃调试非常有用。

如何查看iphone上的崩溃日志


// ios8之前
设置
通用
关于本机
诊断与用量
诊断与用量数据

// iOS 8
设置
隐私
诊断与用量
诊断与用量数据

如何同步设备日志到我们的mac上


如果是其他用户并且是APP Store下的APP
需要用户在'如何查看iphone上的崩溃日志'中,将《自动发送》开启,打开《与应用开发者共享》,这样用户的APP崩溃后,会提示发送崩溃日志到开发者,开发者就可以在iTunes Connect中下载这些崩溃日志。
如果是手中的真机
直接将IPHONE连接到iTunes,打开xcode->window->devices,导出你需要的崩溃日志即可

导入步骤

如何使用symbolicatecrash分析崩溃日志


Step 1:在你的MAC桌面创建一个新文件夹,并且命名为"CrashReport"

Step 2:打开前往应用程序,找到 Xcode 应用程序, 右击它选中 "显示包内容" ,之后根据下面提供的路径

Xcode6.0之前:
"Contents->Developer->Platforms->iPhoneOS.platform->Developer->Library->PrivateFrameworks->DTDeviceKit.framework->Versions->A->Resources"

OR

"Contents->Developer->Platforms->iPhoneOS.platform->Developer->Library->PrivateFrameworks->DTDeviceKitBase.framework->Versions->A->Resources"

Xcode6.0之后
改成 "Contents/SharedFrameworks"

实在找不到可以打开终端输入 find /Applications/Xcode.app -name symbolicatecrash -type f ,然后终端会返回这个文件的路径

只要找到"symbolicatecrash" 文件, 复制然后粘贴到刚才创建的 "CrashReport" 文件夹里面.

Step 3: 从Xcode Archive的二进制文件中找到.dSYM文件和.app文件拷贝到刚才创建的 "CrashReport" 文件夹里面.

1.png 2.png 3.png

Step 4:打开终端进入CrashReport文件夹,依次输入以下命令行:
cd /Users/username/Desktop/CrashReport

export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer

./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash
这时候终端将会进行处理......
处理结果是生成一个新的文件symbol.crash。然后打开这个文件。
你就会看到日志跟我们调试APP的控制台输出的内容一样了!

你应该看到的是这样的

have fun


--EOF--
若无特别说明,本站文章均为原创,转载请保留链接,谢谢

相关文章

网友评论

  • 哎中文不艾汉语:楼主我用你的方法,生成了symbol.crash文件,但是打开是个空白的文件呢
  • 悠闲自在的蜗牛:这文章跟2014年的一模一样
  • 018789f3c193:symbolicatecrash工具咯,本人用的Xcode8,路径为:




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

    xcode8 symbolicatecrash 路径

  • 小明君:6666 学习了,不过大神能不能讲的再深入一点
  • wuyangLi:感觉.app没啥用啊 只有.app.dSYM用到了
  • iOS_愛OS:谢谢楼主,刚刚看了之后 多试了几次终于成功了
  • 阿尔法代码狗:楼主在不,
    :sweat:
  • a706aa61f4d8:我怎么在Contents/SharedFrameworks 下找不到symbolicateCrash 文件呢,大神。
    iOS_愛OS:@D0ME 终端 用这个命令 find /Applications/Xcode.app -name symbolicatecrash -type f
  • Sanchain:现在新的Xcode可以符号化Crash了吧
    青葱烈马:@Sanchain 这个crash 文件怎么拿?
    Sanchain:@青葱烈马 拿到crash文件就可以定位到哪个类,哪个方法里了
    青葱烈马:@Sanchain 你好, 利用 Xcode 怎么符号化 Crash?
  • 纪宝宝:谢谢楼主哈,之前公司人刚教我怎么解析,然后给忘了,看到楼主的文章才回忆起来,三克油 :blush:
  • cd5a2582d1e2:日志为空啊 ???
    iOS_愛OS:@冰季天下 你操作有误
  • blue_man:说一样的也是sb。不过还是看不懂~~
    iOS_愛OS:@blue_man 还好,百度下,几分钟就懂了
  • 微笑的痕迹:我执行了之后 生成的文件跟导出的crash一摸一样 还是看不懂呢
    纪宝宝:@Casablanca1Q84S 他给的步骤没有问题,是可以解析的
    如果解析出来的crash一模一样,说明你解析失败了,我碰到一次,后来问了公司其他人知道原因大概是这样的:
    你的.crash报告,应该和你打包的产生崩溃的那个项目版本保持一致的,也就是你第一次打包产生的.crash,然后你又打包了,然后这时候你导出的.dsym是你第二次打包的dsym。两次不对应,导致解析失败
    Casablanca1Q84S:@攻城人员 我也是。。。骗子
  • 春花秋月2020:没用的,我的执行出来也是空的,但是确实奔溃了。
  • wendyqq:楼主这里export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer多了一个双引号
    a18bbfaeae63:@wendyqq updated
  • redye:终于找到一个可执行的崩溃日志符号化了,但是我符号化出来的是空文件 ╮(╯▽╰)╭
  • 人呆木水:赞一个!

本文标题:Xcode崩溃日志分析工具symbolicatecrash用法

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