制作抓取APP崩溃和无响应日志的小工具
前言
在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之后可以用,但一般用不上。
三、优点与限制
- 手机无需root
- 无需eclipse支持
- 方便保存、查找日志
- 实时日志不能在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崩溃和无响应日志的小工具相关推荐
- 测试人员遇到Android APP崩溃和无响应手足无措?
这2天,在测APP兼容性时,遇到APP奔溃闪退的情况.将问题反馈给开发后,开发自己调试后,没有复现.由于又是远程,base地不在一块,我总不能把手机寄过去吧,那也太费事了. 所以就想到,提供明确的报错 ...
- python获取app信息的库_Python学习教程:另辟蹊径,appium抓取app应用数据了解一下...
作为爬虫工程师,没有价格不知道selenium的. 什么是selenium? Selenium原本是一个用于Web应用程序自动化测试工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一 ...
- appium python 抓包_Python学习教程:另辟蹊径,appium抓取app应用数据了解一下
原标题:Python学习教程:另辟蹊径,appium抓取app应用数据了解一下 作为爬虫工程师,没有价格不知道selenium的. 什么是selenium? Selenium原本是一个用于Web应用程 ...
- 自动抓取app数据技术方案总结
在app运营过程中,有时候我们需要了解app中的一些数据,比如:我们自己开的网店,有时候app官方提供的数据并不能满足我们的实际需求,这时就需要使用工具来自动抓取我们自己店铺中有用的数据.一般有两种实 ...
- 使用WinDbg抓取程序报错的Dump文件,例如抓取IE崩溃的Dump
前几天分享了一个关于如何抓蓝屏Dump的帖子,今天再和大家分享一个使用WinDbg来抓取程序崩溃的Dump.有了Dump后,我们可以很迅速的解决问题,比如说IE崩溃,QQ崩溃,很多时候我们是一点 ...
- python123 app下载_Python 逆向抓取 APP 数据
今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固 ...
- Python 逆向抓取 APP 数据
今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固 ...
- python爬取app、返回的是加密数据_Python 逆向抓取 APP 数据
今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固 ...
- Fiddler抓取APP网络请求
安装Fiddler 一路next就行了. 配置Fiddler 1.允许解析https 2.允许抓取远程流量 3.配置只抓取app流量 4.关闭pc端防火墙或开通相关规则 Android端配置 1.配置 ...
最新文章
- windows命令行下访问linux,Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux...
- 算法复习之坐标离散化
- 什么是MIME?什么是MIME邮件?
- 计算机科学与技术专业《计算机网络原理》课程实验指导书,计算机科学导论,课程实验指导书解读.pdf...
- JNI系列(1):基础篇
- Java面试题:List一边遍历,一边删除
- 月薪11.5K 土木人零基础转行软件测试工程师,他都经历了什么?
- 查看Sql语句执行速度
- 局域网DNS劫持,输入网址会跳转到其他的广告页
- windows2016服务器优化,Windows server 2016系统基本优化设置
- shopex mysql 数据库服务器_[日记] shopex转移以及MySql简单操作命令
- 白城师范学院计算机系鲍金玲,企业绩效考核方法的比较与借鉴
- 接口测试平台代码实现146: 平台主题-夏日清凉5
- Drupal XSS漏洞(CVE-2019-6341)
- 在服务器上安装jdk
- wps自动图文集 重新编号_如何使用自动图文集在Microsoft Word中快速插入文本块
- macbook的appstore打不开的解决办法
- 国家二级计算机mysql_全国计算机等级考试二级MySQL练习软件
- 英语读书笔记-Book Lovers Day02
- java语言流所在的包_Java语言中提供处理不同类型流的类所在的包是( )。