文章目录
- 我们先来简单了解下Crash:Crash,就是崩溃。anr(Application Not Responding — 程序无响应)是Crash的一种。程序正常运行中,可能会出现未捕获到的异常,这就会造成崩溃。
- NullPointerException 空指针 ClassCastException 类型转换异常 IndexOutOfBoundsException 下标越界异常 ActivityNotFoundException Activity 未找到异常 IllegalStateException 非法状态异常 ArrayIndexOutOfBoundsException 数组越界异常 SecurityException 安全异常 NoSuchMethodException 方法未找到异常 SQLException 操作数据库异常
- 对于开发人员来说,抓取日志是很方便的,但对于测试人员来说,就不是太方便了。大多都是直接dos窗口下执行adb命令来抓取日志,而每次都敲命令也是很麻烦。
所以通过adb程序与bat命令组合使用来抓取日志,就要方便很多了,短短几秒钟,可以轻松搞定日志的抓取,期不期待。
- 安装JDK和ADB,这个安装很简单,可参见以前的博文,基于Python的Appium环境搭建合集。
- 环境准备好后,就来写bat文件了。
- 命令参考如下,制作成logcat.bat文件,logcat.bat文件可以放置任意位置。注意:如果adb没有配置到环境变量中,则需要将logcat.bat文件放到adb对应文件夹中。 @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、或者某一段时间内已经发生过Crash,点击我们制作的bat文件,logcat文件中的命令会将手机的logcat日志拉下来并实时记录,直到你关闭cmd窗口。 然后在拉下来的txt中寻找FATAL关键字,附近上下文即为Crash日志。
- anr:全称为Application Not Responding,意思为程序无响应。 命令参考如下,制作成anr.bat文件,anr.bat文件可以放置任意位置。注意:如果adb没有配置到环境变量中,则需要将anr.bat文件放到adb对应文件夹中。 @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 实现原理与捕获Crash异常是一样的,只是该命令是针对发生anr的情况。
- 捕获Crash异常具体用法: ①将android手机连接电脑,开启开发者模式并允许usb调试; ②运行logcat.bat文件 ③如果手机程序已经发生过crash,10秒后关闭cmd窗口;如果是想重现crash,则在手机端重现后即可关闭cmd窗口; ④在logcat.bat的同级目录下会生成一份log文件,从文件中搜查FATAL关键字,便可找到崩溃代码。 查看报错日志,报错如下所示: 如上所示截图,就是测试过程中,发生奔溃的日志了,将日志贴在bug里,既方便开发排查问题,又节约协作时间。
- 使用bat文件捕获日志,有如下几个有点:手机无需root;无需开发环境支持;方便保存、查找日志;操作简单。 以上就是捕获报错日志的操作步骤了,希望对有需要的博友有所帮助。
这2天,在测APP兼容性时,遇到APP奔溃闪退的情况。将问题反馈给开发后,开发自己调试后,没有复现。由于又是远程,base地不在一块,我总不能把手机寄过去吧,那也太费事了。
所以就想到,提供明确的报错日志,让开发定位问题,岂不是就很方便了,也解决了远程的问题。
那如何抓取到Crash日志呢,我又没开发调试工具,也不可能在短时间内搭建一套开发环境。寻思答案后,最终得到了完美解决,且听细细道来。
我们先来简单了解下Crash:Crash,就是崩溃。anr(Application Not Responding — 程序无响应)是Crash的一种。程序正常运行中,可能会出现未捕获到的异常,这就会造成崩溃。
NullPointerException 空指针
ClassCastException 类型转换异常
IndexOutOfBoundsException 下标越界异常
ActivityNotFoundException Activity 未找到异常
IllegalStateException 非法状态异常
ArrayIndexOutOfBoundsException 数组越界异常
SecurityException 安全异常
NoSuchMethodException 方法未找到异常
SQLException 操作数据库异常
对于开发人员来说,抓取日志是很方便的,但对于测试人员来说,就不是太方便了。大多都是直接dos窗口下执行adb命令来抓取日志,而每次都敲命令也是很麻烦。
所以通过adb程序与bat命令组合使用来抓取日志,就要方便很多了,短短几秒钟,可以轻松搞定日志的抓取,期不期待。
安装JDK和ADB,这个安装很简单,可参见以前的博文,基于Python的Appium环境搭建合集。
环境准备好后,就来写bat文件了。
命令参考如下,制作成logcat.bat文件,logcat.bat文件可以放置任意位置。注意:如果adb没有配置到环境变量中,则需要将logcat.bat文件放到adb对应文件夹中。
@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、或者某一段时间内已经发生过Crash,点击我们制作的bat文件,logcat文件中的命令会将手机的logcat日志拉下来并实时记录,直到你关闭cmd窗口。
然后在拉下来的txt中寻找FATAL关键字,附近上下文即为Crash日志。
anr:全称为Application Not Responding,意思为程序无响应。
命令参考如下,制作成anr.bat文件,anr.bat文件可以放置任意位置。注意:如果adb没有配置到环境变量中,则需要将anr.bat文件放到adb对应文件夹中。
@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
实现原理与捕获Crash异常是一样的,只是该命令是针对发生anr的情况。
捕获Crash异常具体用法:
①将android手机连接电脑,开启开发者模式并允许usb调试;
②运行logcat.bat文件
③如果手机程序已经发生过crash,10秒后关闭cmd窗口;如果是想重现crash,则在手机端重现后即可关闭cmd窗口;
④在logcat.bat的同级目录下会生成一份log文件,从文件中搜查FATAL关键字,便可找到崩溃代码。
查看报错日志,报错如下所示:
如上所示截图,就是测试过程中,发生奔溃的日志了,将日志贴在bug里,既方便开发排查问题,又节约协作时间。
使用bat文件捕获日志,有如下几个有点:手机无需root;无需开发环境支持;方便保存、查找日志;操作简单。
以上就是捕获报错日志的操作步骤了,希望对有需要的博友有所帮助。


发表回复