這2天,在測APP兼容性時,遇到APP奔潰閃退的情況。將問題反饋給開發后,開發自己調試后,沒有復現。由於又是遠程,base地不在一塊,我總不能把手機寄過去吧,那也太費事了。
所以就想到,提供明確的報錯日志,讓開發定位問題,豈不是就很方便了,也解決了遠程的問題。
那如何抓取到Crash日志呢,我又沒開發調試工具,也不可能在短時間內搭建一套開發環境。尋思答案后,最終得到了完美解決,且聽細細道來。
了解Crash
我們先來簡單了解下Crash:Crash,就是崩潰。anr(Application Not Responding -- 程序無響應)是Crash的一種。程序正常運行中,可能會出現未捕獲到的異常,這就會造成崩潰。
常見Crash異常
NullPointerException 空指針
ClassCastException 類型轉換異常
IndexOutOfBoundsException 下標越界異常
ActivityNotFoundException Activity 未找到異常
IllegalStateException 非法狀態異常
ArrayIndexOutOfBoundsException 數組越界異常
SecurityException 安全異常
NoSuchMethodException 方法未找到異常
SQLException 操作數據庫異常
抓取奔潰和無響應日志
對於開發人員來說,抓取日志是很方便的,但對於測試人員來說,就不是太方便了。大多都是直接dos窗口下執行adb命令來抓取日志,而每次都敲命令也是很麻煩。
所以通過adb程序與bat命令組合使用來抓取日志,就要方便很多了,短短幾秒鍾,可以輕松搞定日志的抓取,期不期待。
環境准備
安裝JDK和ADB,這個安裝很簡單,可參見以前的博文,基於Python的Appium環境搭建合集。
bat文件制作
環境准備好后,就來寫bat文件了。
捕獲Crash異常的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異常的bat文件命令
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;無需開發環境支持;方便保存、查找日志;操作簡單。
以上就是捕獲報錯日志的操作步驟了,希望對有需要的博友有所幫助。