51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3572|回复: 5
打印 上一主题 下一主题

[转贴] [libimobiledevice 优化] iOS Crash日志获取工具 idevicecrashreport 功能优化

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-6-27 15:23:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
接着 Macaca 实现 IOS Monkey 测试 聊,c语言早就忘干净了,各种语言都是相通的,连蒙带猜的方式修改了idevicecrashreport.c 文件,优化了一个功能,新增了一个功能。
idevicecrashreport的问题打算使用idevicecrashreport 处理crash报告,但是发现idevicecrashreport 一年多没有更新了,使用过程中发现一些问题
原版执行的结果如下,两个问题
  1.     1./WiFi/WiFiManager/wifi-buf-02-17-2017__11:37:19.log log文件是完全没有必要下载的
  2.     2./JetsamEvent-2017-03-22-091417.ips 非测试app的crash文件,我期望可以过滤下载

  3. MACdeMacBook-Pro:log MAC$ /usr/local/bin/idevicecrashreport -k .
  4. Copy: /JetsamEvent-2017-03-22-091417.ips
  5. Copy: /TuNiuApp-2017-03-21-184033.ips
  6. Copy: /WiFi/WiFiManager/wifi-buf-02-17-2017__11:37:19.log
  7. Copy: /WiFi/WiFiManager/wifi-buf-02-17-2017__14:30:48.log
  8. Copy: /WiFi/WiFiManager/wifi-buf-02-17-2017__15:50:44.log
  9. Copy: /WiFi/WiFiManager/wifi-buf-02-19-2017__16:12:35.log
  10. Copy: /WiFi/WiFiManager/wifi-buf-02-22-2017__11:49:01.log
  11. Copy: /WiFi/WiFiManager/wifi-buf-02-22-2017__12:02:49.log
  12. Copy: /WiFi/WiFiManager/wifi-buf-03-03-2017__14:34:33.log
  13. Copy: /WiFi/WiFiManager/wifi-buf-03-03-2017__14:47:16.log
  14. Copy: /WiFi/WiFiManager/wifi-buf-03-06-2017__18:11:38.log
  15. Copy: /WiFi/WiFiManager/wifi-buf-03-06-2017__21:31:36.log
  16. Copy: /WiFi/WiFiManager/wifi-buf-03-10-2017__16:33:06.log
  17. Copy: /WiFi/WiFiManager/wifi-buf-03-16-2017__01:11:13.log
  18. Copy: /mediaserverd.apscal-2017-03-21.log
  19. Done.
  20. MACdeMacBook-Pro:log MAC$

  21.     针对第一个问题,在idevicecrashreport脚本复制设置的文件执行先判断是否是 .ips文件,否则不下载。

  22.     针对第二个问题,在idevicecrashreport脚本加了一个过滤文件名称的参数 -g || -grep ,比如过滤文件名 包含TuNiuApp的文件,只下载TuNiuApp的crash日志,其他app的crash日志不处理。

  23. 帮助命令可以查看添加的功能

  24. MACdeMacBook-Pro:log MAC$ /usr/local/bin/idevicecrashreport -h
  25. Usage: idevicecrashreport [OPTIONS] DIRECTORY
  26. Move crash reports from device to a local DIRECTORY.

  27.   -e, --extract     extract raw crash report into separate '.crash' file
  28.   -k, --keep        copy but do not remove crash reports from device
  29.   -d, --debug       enable communication debugging
  30.   -u, --udid UDID   target specific device by its 40-digit device UDID
  31.   -g, --grep        grep crash filename
  32.   -h, --help        prints usage information

  33. Homepage: <http://libimobiledevice.org>

  34. 实际使用效果如下:

  35. MACdeMacBook-Pro:log MAC$ /usr/local/bin/idevicecrashreport -k -g TuNiuApp .
  36. Copy: /TuNiuApp-2017-03-21-184033.ips
  37. Done.
  38. 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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2017-6-27 15:26:12 | 只看该作者
又是你 你就好比漆黑夜里的萤火虫 那么的拉风 那么的耀眼。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2017-6-27 15:33:41 | 只看该作者
又是你 你就好比漆黑夜里的萤火虫 那么的拉风 那么的耀眼。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-21 05:32 , Processed in 0.064930 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表