|
接着 Macaca 实现 IOS Monkey 测试 聊,c语言早就忘干净了,各种语言都是相通的,连蒙带猜的方式修改了idevicecrashreport.c 文件,优化了一个功能,新增了一个功能。
idevicecrashreport的问题打算使用idevicecrashreport 处理crash报告,但是发现idevicecrashreport 一年多没有更新了,使用过程中发现一些问题
原版执行的结果如下,两个问题
- 1./WiFi/WiFiManager/wifi-buf-02-17-2017__11:37:19.log log文件是完全没有必要下载的
- 2./JetsamEvent-2017-03-22-091417.ips 非测试app的crash文件,我期望可以过滤下载
- MACdeMacBook-Pro:log MAC$ /usr/local/bin/idevicecrashreport -k .
- Copy: /JetsamEvent-2017-03-22-091417.ips
- Copy: /TuNiuApp-2017-03-21-184033.ips
- Copy: /WiFi/WiFiManager/wifi-buf-02-17-2017__11:37:19.log
- Copy: /WiFi/WiFiManager/wifi-buf-02-17-2017__14:30:48.log
- Copy: /WiFi/WiFiManager/wifi-buf-02-17-2017__15:50:44.log
- Copy: /WiFi/WiFiManager/wifi-buf-02-19-2017__16:12:35.log
- Copy: /WiFi/WiFiManager/wifi-buf-02-22-2017__11:49:01.log
- Copy: /WiFi/WiFiManager/wifi-buf-02-22-2017__12:02:49.log
- Copy: /WiFi/WiFiManager/wifi-buf-03-03-2017__14:34:33.log
- Copy: /WiFi/WiFiManager/wifi-buf-03-03-2017__14:47:16.log
- Copy: /WiFi/WiFiManager/wifi-buf-03-06-2017__18:11:38.log
- Copy: /WiFi/WiFiManager/wifi-buf-03-06-2017__21:31:36.log
- Copy: /WiFi/WiFiManager/wifi-buf-03-10-2017__16:33:06.log
- Copy: /WiFi/WiFiManager/wifi-buf-03-16-2017__01:11:13.log
- Copy: /mediaserverd.apscal-2017-03-21.log
- Done.
- MACdeMacBook-Pro:log MAC$
- 针对第一个问题,在idevicecrashreport脚本复制设置的文件执行先判断是否是 .ips文件,否则不下载。
- 针对第二个问题,在idevicecrashreport脚本加了一个过滤文件名称的参数 -g || -grep ,比如过滤文件名 包含TuNiuApp的文件,只下载TuNiuApp的crash日志,其他app的crash日志不处理。
- 帮助命令可以查看添加的功能
- MACdeMacBook-Pro:log MAC$ /usr/local/bin/idevicecrashreport -h
- Usage: idevicecrashreport [OPTIONS] DIRECTORY
- Move crash reports from device to a local DIRECTORY.
- -e, --extract extract raw crash report into separate '.crash' file
- -k, --keep copy but do not remove crash reports from device
- -d, --debug enable communication debugging
- -u, --udid UDID target specific device by its 40-digit device UDID
- -g, --grep grep crash filename
- -h, --help prints usage information
- Homepage: <http://libimobiledevice.org>
- 实际使用效果如下:
- MACdeMacBook-Pro:log MAC$ /usr/local/bin/idevicecrashreport -k -g TuNiuApp .
- Copy: /TuNiuApp-2017-03-21-184033.ips
- Done.
- MACdeMacBook-Pro:log MAC$
复制代码 github地址:https://github.com/baozhida/libimobiledevice
修改的文件 :https://github.com/baozhida/libi ... devicecrashreport.c
直接下载然后自己编译,编译方式同第一行提到的帖子
PS 题外话自动获取crash日志可以通过idevicecrashreport脚本完成了,下面计划完成自动解析crash文件(xcode查看crash日志,有些可以直接符号化,一些则不能,需要借助.dsYM 文件和symbolicatecrash 脚本完成解析,没有xcode打开查看过的crash 直接使用idevicecrashreport下载的crash文件都是没有符号化处理的)
什么是符号表符号表就是指在Xcode项目编译后,在编译生成的二进制文件.app的同级目录下生成的同名的.dSYM文件。
.dSYM文件其实是一个目录,在子目录中包含了一个16进制的保存函数地址映射信息的中转文件,所有Debug的symbols都在这个文件中(包括文件名、函数名、行号等),所以也称之为调试符号信息文件。
符号表有什么用符号表就是用来符号化 crash log(崩溃日志)。crash log中有一些方法16进制的内存地址等,通过符号表就能找到对应的能够直观看到的方法名之类。
如何得到.dsYM文件我们在Archive的时候会生成.xcarchive文件,然后显示包内容就能够在里面找到.dsYM文件和.app文件。
Done
|
|