APP(二)adb 日志分析


  • 掌握常見adb命令
  • 了解 Android 系統日志文件
  • 示例分析ANR & crash 日志

APP性能測試工具:

  • 移動全平台性能測試:PerfDog性能狗
  • soloPi

1、ADT、SDK、ADB?

  • ADT (Android development tools) --- Android 開發工具。 在 Eclipse 上調用各種與 android 有關的插件,便要ADT
  • SDK (software development kit) ---- 軟件開發部件。要用到各種 android 平台,好比 android2.3 等,便要有SDK
  • ADB (Android debug bridge) 是用來連接 安卓手機 和 PC端 的橋梁,通過 adb服務,在PC端命令行界面對手機或者模擬器進行全面的操作。

adb (Android Debug Bridge ) 是 android sdk (software developmentkit) 的一個工具

adb 是用來連接 安卓手機 和 PC端 的橋梁,要有 adb 作為二者之間的維系,才能讓用戶在電腦上對手機進行全面的操作。

Android 的初衷是用 adb 這樣的一個工具來協助開發人員在開發 android 應用的過程中更快更好的調試 apk,因此 adb 具有 安裝 卸載app、拷貝推送文件、查看設備硬件信息、查看應用程序占用資源、在設備執行 shell 命令等功能。

 

adb 組件

  

客戶端

  • 該組件發送命令,客戶端在開發計算機上運行,可以通過發出 adb 命令從命令行終端調用客戶端。

后台程序

  • 該組件在設備上運行命令,后台程序在每個模擬器或設備實例上作為后台進程運行。

服務器

  • 該組件管理 客戶端 和 后台程序 之間的通信,服務器 在開發計算機上作為后台進程運行。

 

如何連接手機https://www.cnblogs.com/yyoba/p/12401481.html

 

2、adb常見命令

adb --help

    • 查看幫助手冊

adb devices

    • 檢測連接到電腦的安卓設備,這個是我們會經常用到的檢測命令。

adb connect/disconnect ip:端口號 通過wif進行遠程連接手機進行調試,手機和電腦在連接同一個路由器5555

adb shell

    • 登錄設備 shell (命令行的人機界面),II Is命令都可以用,進入到 linux 命令環境了,相當於執行遠程命令

adb pull <手機文件路徑> <本機路徑>

    • (鋪歐)從手機中拉取信息放到本地電腦上,ll相當於開門

adb push <本機文件路徑> <手機路徑>

    • (朴實)從本地推送信息到手機上去    

adb install  xxxx.apk(安裝包的路徑,直接拖安裝包)

    • 為了獲取 apk 的安裝包所在地址,可以直接把 apk 拖到 cmd 的窗口獲取,返回 success 就說明安裝成功了

adb install -r xxxx.apk:(卸載應用時需要保留數據和緩存文件,與下面藍色命令一起使用)

    • 保留數據和緩存文件,重新安裝APK

adb uninstall com.tencent.mobileqq(應用包名)

    • 卸載應用

adb uninstall -k com.tencent.mobileqq(應用包名)

    • 卸載應用,但保留數據和緩存文件

adb shell dumpsys activity | find "mFocusedActivity"

    • 查看前台應用包名

adb 服務相關命令:

adb kill-server

    • 終止adb服務

adb start-server

    • 啟動 adb 服務,通常在 adb 出現問題時,結合 kill server 命令一起使用

adb shell pm list packages

    • 列出所有包名
    • 命令最后加上 -f 列出所有 apk 路徑及包名
    • 命令最后加上 -s 列出系統 apk 路徑及包名
    • 命令最后加上 -3 列出用戶 apk 路徑以及包名

 

 

adb shell am start -n App包名/App啟動入口

    • 啟動App
      • App包名:adb shell dumpsys activity | find "mFocusedActivity"  
      • 獲取入口:輸入 cmd ,進入命令行窗口,輸入命令:aapt dump badging apk安裝包路徑    

        

             

        

 

        

 

 

adb shell pm clear 包名

    • 清除應用的數據和緩存  

adb shell input tap x軸坐標 y軸坐標

    • 坐標點擊

                    

 

 

 

打印日志命令:

adb logcat

    • 查看實時日志信息

adb logcat -v time

    •  存在時間信息的日志信息

adb logcat -v time > 存放在本地那個文件的路徑地址

    • 把日志文件放在本地
    • 示例:adb logcat -v time > D:\app_日志目錄\logcat.txt

  獲取到日志后在日志文件中搜索:Error 日志文件中Error表示報錯提示

 

3、logcat日志文件

  • android 日志系統提供 了記錄和查看系統調試信息的功能,日志都是從各種軟件和一些系統的緩沖區中記錄下來的,緩沖區可以通過logcat命令來查看和使用
  • 使用方式:
    • [adb] logcat [<option>]... [<fiter-spec>].  
  • logcat是以如下開頭的:
    • 1. ------- beginning of xox  
  • 開發者選項,有個選項叫做” 日志記錄器緩沖區大小”,默認是256K,日志是循環寫入環形緩沖區的。在通常情況下,寫滿時最舊的日志會被刪除以給新輸出的日志留內存空間一真機設置,模擬器一般沒有

 

4、logcat日志文件分析

輸出的日志格式如下所示:

由五部分組成:

    • 1.寫下日志時的時間,如上中01-11 09:39:35.209
    • 2.優先級,在Android中, 日志的優先級從低到高分以下幾種:
      • V- -Verbose (嘜嗦,最低級別,開發調試中的一些詳細信息,僅在開發中使用,不可在發布產品中輸出)
      • D-Debug (調試,用於調試的信息,可以在發布產品中關閉,比較常見)
      • I- -Info (信息,一般提示性的消息)
      • W-Warning (警告)
      • E- Error (愛若兒)(錯誤,已經出現可影響運行的錯誤,比如應用crash時輸出的日志)
    • 3.標簽(tag),標明日志發起者和方便日志的過濾篩選,如上中ActivityManager. 類和模塊。
    • 4. PID (進程ID),如上中491
    • 5.正文,本日志的主體內容

 

5、發生crash如何分析---產生運行崩潰的報錯

發生 crash,adb logcat 獲取日志分析:

    • 1、搜索 exception 關鍵字,根據時間,包名定位
    • 2、搜索fatal 、caused by關鍵字

 

實際操作步驟:

1、當軟件產生運行停止報錯信息

    • 馬上執行
    • adb logcat -v time > d:\app_日志目錄\crash.txt
    • 等待十秒
    • 按Ctrl + C 結束截取日志
    • 在本地查看 crash.txt 截取到的日志文件

搜索 exception 關鍵字、時間,包名定位

搜索fatal /caused by     fatal:致命的    caused by:原因

 

6、何為ANR===應用無響應的報錯?

ANR全名 Application Not Responding,也就是應用無響應當操作在一段時間內系統無法處理時

ANR對話框

    • 為用戶在主線程長時間被阻塞時提供處理交互, 提高用戶體驗
    • Android 系統一 種自身檢測機制

6.1發生 ANR 如何分析==應用沒有響應

系統在發生ANR時,會通過三種方式記錄信息:

    • Logcat日志
    • Trace文件
    • DropBox服務

ANR分析-01

通過 Logcat 日志進行分析:

日志格式

    • ActivityManager: ANR in [進程名]([部件名])
    • ActivityManager: PID:[應用進程ID]
    • ActivityManager: Reason:[原因提示]
    • [Process CPU state]

ps:通過搜索 anr 關鍵字,若無具體 java 報錯信息,繼續另一種方法獲取日志

 

ANR分析-02

通過 Trace(譯:錘死)文件進行分析:     /data/anr/

Dump stack trace信息

Dump的進程包括:當前應用進程,父進程,主進程,persistent進程, 以及CPU占用率排在前幾位的(最多5個)進程

ps:只能記錄最后-次發生的anr的信息

示例操作步驟:

前提:當軟件產生ANR報錯信息后:通過 trace 文件進行分析

  • 進入手機adb shell
  • 進入cd /data/anr
  • 詳細信息ll

  

  • 按Ctrl + C 退出
  • 拉取文件到本地
  • adb pull /data/anr/traces.txt d:\app_日志目錄\
  • 把整個文件給開發

 

ANR分析-03

  Dropbox:(譯:這兒巴格斯)服務方法分析

data/anr/traces.txt 文件里面只能保留最后一次發生ANR時的traces信息

    • 通過 dropbox 可以收集系統一段時間內的異常信息 (包括ANR、crash)
    • /data/system/dropbox是dropbox指定的文件存放位置

示例操作步驟:

前提:當軟件產生ANR報錯信息,通過服務方法分析

  • 進入手機
    • adb shell  
  • 進入
    • cd /data/anr  
  • 詳細信息
  • ll 顯示最新的報錯

  

  • 進入服務:   cd /data/system
  • 查看詳細信息ll

  

  • 進入(cd /data/system/dropbox):cd dropbox
  • 查看詳細信息:ll             查看是否有anr和crash關鍵字

  

  • 按Ctrl + C 退出
  • 拉取文件到本地目錄下(logs):
    • adb pull /data/system/dropbox d:\app_日志目錄\logs  
  • 把整個文件給開發

實例操作:

1、連接到真機

使用USB數據線,手機處於開發者模式

檢測是否連接到電腦:adb duvices

    • (如果檢測不到可以使用默認端號:5555,IP是手機IP地址,同一個WiFi
    • :adb connect 127.0.0.1:5555使用這個鏈接手機)

查看安裝包位置:

adb devices 檢測連接到電腦的安卓設備,

  可能檢測不到,需要進行一下操作

  adb connect 127.0.0.1:62001          手動連接 手機端口號是5555

  adb disconnect 127.0.0.1:62001      手動斷開

2、鏈接成功后,登錄到安卓設備

命令:adb shell

  

ls 顯示根目錄下的所有文件

ll 顯示所有文件的屬性

  

cd data 進入data目錄

ll 顯示data目錄下的所有文件

  

再次輸入cd data 可以查看應用程序的包名

  

退出登錄狀態:Ctrl + C

必須要根目錄才可拉取文件

 

7、安裝/卸載軟件:

  安裝軟件命令:

    • adb install 安裝包的路徑(直接拖安裝包)  

  卸載軟件:

    • 在模擬器打開應用后,獲取當前打開應用的包名,然后卸載
      • adb shell dumpsys activity | find "mFocusedActivity"          :獲取前台正在運行的應用包名
  • 下圖:com.xxzb.fenwoo 及 頁面的應用名(每個頁面都有一個)

    

  • adb uninstall 應用包名           :卸載程序
    • adb uninstall com.xxzb.fenwoo

 

*******請大家尊重原創,如要轉載,請注明出處:轉載自:https://www.cnblogs.com/shouhu/,謝謝!!******* 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM