iOS 开发中, 我们经常会遇到 crash 的问题.
在开发阶段, crash 很容易排查和解决.但是到了用户手中, 就没那么简单了.
当然, 现在很多第三方的 SDK 有 crash 分析的功能, 我们可以直接集成到我们的项目当中来.
~~大家可以到网上 soso.
但是, 我们还是有必要知道更多 crash 的知识, 不然, 哪天让你开发一个 crash 日志系统, 你就会蒙逼了!
在 iOS crash 系列博客中, 我会结合工作实例, 跟大家一起来探索和分析 crash 的种种...
今天跟大家来道小菜, 希望你会喜欢.
symbolicatecrash 工具是 xcode 自带(也可以说是集成)的.
其实是一个 perl 脚本.
可以通过下面两步, 来查找该工具的具体位置
cd
find /Applications -name symbolicatecrash
找到位置在
/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
下面举一个具体的例子, 说明其用法, 算是抛砖引玉吧.
1. xcode 新建一个工程, 或者使用已有的工程, 这里暂命名为 dsds
2. 工程设置 debug 下产生 dsym 文件
进入 Build Settings, 如图
3. 加入 crash 代码
在某个 ViewController 里面加入如下代码
- (void)viewDidLoad {
[super viewDidLoad];
id s = @"";
NSString *stp = [s stringValue];
NSLog(@"stp = %@", stp);
}
5. 启动进入该 ViewController, crash
6. 导出手机里面的 crash log
* xcode/window/devices
* 在弹出的界面中, 选择 view device logs
右键 Export log 命名为 dsds.crash, 保存到 Desktop/crash_file 目录.
-- 小插曲
细心的你, 或许已经发现, 这里已经解析处理 crash 的位置和详情了.
为了说明工具的使用, 我建议你还是继续看下面的内容.
-- 您继续---
7 . 找到 dsym 文件和 app
* xcode 中选择 Products/dsds.app/show in finder, 如图
* 复制文件到Desktop/crash_file 目录
8. 复制symbolicatecrash工具到上述目录
那么一切看起来是这样的
9. 设置坏境变量
export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"
cd ~/Desktop/crash_file
./symbolicatecrash ./dsds.crash ./dsds.app.dSYM > dsds_symbol.crash
那么现在看起来是这样的
使用 console 打开 dsds_symbol.crash 文件
清楚的看到在 ViewController 的 第27 行 crash 了.
参考:
* http://www.jianshu.com/p/744b5062d5fe
* http://wonderffee.github.io/blog/2013/08/14/dont-use-symbolicatecrash-to-symbolicate-the-crash-log/