前言

在Android APP的测试过程中经常遇到crash和anr,开发人员习惯通过eclipse或者eclipse的ddms组件进行捕抓日志,测试人员常通过在dos窗口下adb命令的方式来抓取日志。前者的缺点是启动时非常耗时,后者呢则每次都要写命令也比较麻烦(需要截图时也存在这个问题)。针对这样的情况,本文分享一个通过adb程序与bat命令组合的技巧来抓取日志,只要3~5秒即可获取崩溃日志,非常快捷。

1. 准备工作

一、安装JDK(好像不装也没关系,未实测)和ADB(V1.0.31版本或以上),网上很多指导方法,这里就赘述了。

二、在PATH环境变量中添加ADB路径。这样就能在任意地方调用ADB命令,如adb.exe的位置在c:\adb\adb.exe,则在path中加入c:\adb。

2. 制作捕获日志的批命令

一、制作捕获crash异常的批命令

将以下命令复制,制作成logcat.bat文件。logcat.bat可以放置任意位置(如:桌面)。

@ECHO OFF
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
SET timeStamp=%dt:~0,4%-%dt:~4,2%-%dt:~6,2%_%dt:~8,2%-%dt:~10,2%-%dt:~12,2%
SET mutID=_mut
@ECHO ON
adb logcat -v time > .\"%mutID%_%timeStamp%_logcat.log"
pause

原理:

该工具的原理是bat文件调用adb工具,将手机运行日志拉到本地,并将实时日志也记录到本地。

用法:

当手机需要重现crash、或者x分钟内已经发生过crash(x≈15~30),点击此bat,logcat命令会将手机的logcat日志拉下来并实时记录,直到你关闭cmd窗口。然后在拉下来的txt中寻找fatal字眼,附近上下文即为crash日志。

二、制作捕获ANR异常的批命令

anr:Application Not Responding -- 程序无响应。

将以下命令复制,制作成“ANR捕获.bat”文件。“ANR捕获.bat”可以放置任意位置(如:桌面)。

@ECHO OFF
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
SET timeStamp=%dt:~0,4%-%dt:~4,2%-%dt:~6,2%_%dt:~8,2%-%dt:~10,2%-%dt:~12,2%
SET mutID=_mut
@ECHO ON
adb pull data/anr/traces.txt traces_%timeStamp%.txt

原理:

同上,将手机的traces.txt拉到本地。手机发生anr之后可以用,但一般用不上。

三、优点与限制

  1. 手机无需root
  2. 无需eclipse支持
  3. 方便保存、查找日志
  4. 实时日志不能在cmd窗口回显

3. 演示

以抓取crash异常为例:

步骤1:将android手机连接电脑,开启开发者模式并允许usb调试;

步骤2:运行logcat.bat文件,会出现cmd窗口;

步骤3:①如果手机程序已经发生过crash,5秒后关闭cmd窗口;②如果是想重现crash,则在手机端重现后即可关闭cmd窗口。

步骤4:在logcat.bat的同级目录下会生成一份log文件,从文件中搜查FATAL关键字,便可找到崩溃代码。

4. 代码注释

在这个工具里,因为想用“截图+系统当前日期”的格式来命令日志文件,所以采用了bat命令中的一个函数“timeStamp”。

最初的写法:

set timeStamp=%date:/=-%_%time%echo %timeStamp%
>2018-01-23_11:23:44.43

这个语句能实现我们的要求,但这样写会引发两个严重的问题:

1、10点前的timeStamp会出现空格;

2、%date%和%time%都是直接读windows的时间格式(也就是右下角的那个时间格式),会出现不通用的结果。

改进后的方案:

采用wmic来格式化时间,得出YYYYMMDDHHMinSec,这样就不会出现任何格式问题,代码如下:

@echo offfor /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"echo %dt:~0,14%
>20180123112344

然后在此基础上加各种分隔符:

@echo offfor /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"echo %dt:~0,4%-%dt:~4,2%-%dt:~6,2%_%dt:~8,2%-%dt:~10,2%-%dt:~12,2%>2018-01-23_11-23-44

完毕

制作抓取APP崩溃和无响应日志的小工具相关推荐

  1. 测试人员遇到Android APP崩溃和无响应手足无措?

    这2天,在测APP兼容性时,遇到APP奔溃闪退的情况.将问题反馈给开发后,开发自己调试后,没有复现.由于又是远程,base地不在一块,我总不能把手机寄过去吧,那也太费事了. 所以就想到,提供明确的报错 ...

  2. python获取app信息的库_Python学习教程:另辟蹊径,appium抓取app应用数据了解一下...

    作为爬虫工程师,没有价格不知道selenium的. 什么是selenium? Selenium原本是一个用于Web应用程序自动化测试工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一 ...

  3. appium python 抓包_Python学习教程:另辟蹊径,appium抓取app应用数据了解一下

    原标题:Python学习教程:另辟蹊径,appium抓取app应用数据了解一下 作为爬虫工程师,没有价格不知道selenium的. 什么是selenium? Selenium原本是一个用于Web应用程 ...

  4. 自动抓取app数据技术方案总结

    在app运营过程中,有时候我们需要了解app中的一些数据,比如:我们自己开的网店,有时候app官方提供的数据并不能满足我们的实际需求,这时就需要使用工具来自动抓取我们自己店铺中有用的数据.一般有两种实 ...

  5. 使用WinDbg抓取程序报错的Dump文件,例如抓取IE崩溃的Dump

     前几天分享了一个关于如何抓蓝屏Dump的帖子,今天再和大家分享一个使用WinDbg来抓取程序崩溃的Dump.有了Dump后,我们可以很迅速的解决问题,比如说IE崩溃,QQ崩溃,很多时候我们是一点 ...

  6. python123 app下载_Python 逆向抓取 APP 数据

    今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固 ...

  7. Python 逆向抓取 APP 数据

    今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固 ...

  8. python爬取app、返回的是加密数据_Python 逆向抓取 APP 数据

    今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固 ...

  9. Fiddler抓取APP网络请求

    安装Fiddler 一路next就行了. 配置Fiddler 1.允许解析https 2.允许抓取远程流量 3.配置只抓取app流量 4.关闭pc端防火墙或开通相关规则 Android端配置 1.配置 ...

最新文章

  1. windows命令行下访问linux,Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux...
  2. 算法复习之坐标离散化
  3. 什么是MIME?什么是MIME邮件?
  4. 计算机科学与技术专业《计算机网络原理》课程实验指导书,计算机科学导论,课程实验指导书解读.pdf...
  5. JNI系列(1):基础篇
  6. Java面试题:List一边遍历,一边删除
  7. 月薪11.5K 土木人零基础转行软件测试工程师,他都经历了什么?
  8. 查看Sql语句执行速度
  9. 局域网DNS劫持,输入网址会跳转到其他的广告页
  10. windows2016服务器优化,Windows server 2016系统基本优化设置
  11. shopex mysql 数据库服务器_[日记] shopex转移以及MySql简单操作命令
  12. 白城师范学院计算机系鲍金玲,企业绩效考核方法的比较与借鉴
  13. 接口测试平台代码实现146: 平台主题-夏日清凉5
  14. Drupal XSS漏洞(CVE-2019-6341)
  15. 在服务器上安装jdk
  16. wps自动图文集 重新编号_如何使用自动图文集在Microsoft Word中快速插入文本块
  17. macbook的appstore打不开的解决办法
  18. 国家二级计算机mysql_全国计算机等级考试二级MySQL练习软件
  19. 英语读书笔记-Book Lovers Day02
  20. java语言流所在的包_Java语言中提供处理不同类型流的类所在的包是( )。

热门文章

  1. jre配置环境变量及无法保存设置的Path变量值
  2. Feign简介与简单应用
  3. 科学理性拨开大数据的神秘外衣
  4. 初识MPC Toolbox
  5. 我们要好好正视自己!
  6. 小程序源码:升级版王者荣耀铭文多功能助手-多玩法安装简单
  7. java精选面试题(强烈安利)
  8. 会声会影X8 一打开就提示Corel VideoStudio 已停止工作的解决办法
  9. iOS网络缓存扫盲篇 - 使用两行代码就能完成80%的缓存需求
  10. 在 Go 项目中基于本地内存缓存的实现及应用