adb常用命令和logcat使用

adb常用命令和logcat使用

一 adb常用的幾個命令
1. 查看設備
adb devices
這個命令是查看當前連接的設備, 連接到計算機的android設備或者模擬器將會列出顯示

C:\Documents and Settings\chenxtc>adb devices

List of devices attached

T619+   device


2. 安裝軟件 卸載軟件 
adb install <apk文件路徑>
adb uninstall <軟件名>


4. 登錄設備shell
adb shell
adb shell <command命令>
這個命令將登錄設備的shell.
後面加<command命令>將是直接運行設備命令, 相當於執行遠程命令

5. 從電腦上發送文件到設備
adb push <本地路徑> <遠程路徑>
用push命令可以把本機電腦上的文件或者文件夾複製到設備(手機)

6. 從設備上下載文件到電腦
adb pull <遠程路徑> <本地路徑>
用pull命令可以把設備(手機)上的文件或者文件夾複製到本機電腦

7. 取得設備root權限
adb remount

二 Log方法:
android.util.Log常用的方法有以下5個:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。根據首字母對應VERBOSE,DEBUG,INFO, WARN,ERROR。

1、Log.v 的調試顏色爲黑色的,任何消息都會輸出,這裏的v代表verbose囉嗦的意思,平時使用就是Log.v("","");

2、Log.d的輸出顏色是藍色的,僅輸出debug調試的意思,但他會輸出上層的信息,過濾起來可以通過DDMS的Logcat標籤來選擇.

3、Log.i的輸出爲綠色,一般提示性的消息information,它不會輸出Log.v和Log.d的信息,但會顯示i、w和e的信息

4、Log.w的意思爲橙色,可以看作爲warning警告,一般需要我們注意優化Android代碼,同時選擇它後還會輸出Log.e的信息。

5、Log.e爲紅色,可以想到error錯誤,這裏僅顯示紅色的錯誤信息,這些錯誤就需要我們認真的分析,查看棧的信息了。

三 adb Log過濾:

1. 只顯示需要的輸出,白名單
最方便的當然是通過管道使用 grep 過濾了,這樣可以使用 grep 強大的正則表達式匹配。簡單的匹配一行當中的某個字符串,例如 MyApp:
adb logcat | grep MyApp
adb logcat | grep -i myapp #忽略大小寫。

2 保存log
使用-d參數,可以在讀完所有log後返回,而不會一直等待,在自動化較有用。例如:
adb logcat -d -s xxx > xxx.log //得到filter爲xxx的日誌,存入xxx.log,然後返回。

adb logcat -d -f /sdcard/log.txt 在 sd卡上建立log.txt並導入日誌
或者在調試代碼的時候,一直開始logcat console,可以方便看到執行情況。

使用 logcat 命令

        查看和跟蹤系統日誌緩衝區的命令logcat的一般用法是:

[adb] logcat [<option>] ... [<filter-spec>] ...

   下文介紹過濾器和命令選項,詳細內容可參見Listing of logcat Command Options

    可以在開發機中通過遠程shell的方式使用logcat命令查看日誌輸出:

$ adb logcat

    如果是在遠程shell中可直接使用命令:

# logcat

  過濾日誌輸出

        每一條日誌消息都有一個標記和優先級與其關聯。

標記是一個簡短的字符串,用於標識原始消息的來源 (例如"View" 來源於顯示系統)

優先級是下面的字符,順序是從低到高

V — 明細 (最低優先級)

D — 調試

I — 信息

W — 警告

E — 錯誤

F — 嚴重錯誤

S — 無記載 (最高優先級,沒有什麼會被記載)

    通過運行logcat ,可以獲得一個系統中使用的標記和優先級的列表,觀察列表的前兩列,給出的格式是<priority>/<tag>

    這裏是一個日誌輸出的消息,優先級是“I”,標記是“ActivityManager”:

I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action...}

    如果想要減少輸出的內容,可以加上過濾器表達式進行限制,過濾器可以限制系統只輸出感興趣的標記-優先級組合。

    過濾器表達式的格式是tag:priority ... ,其中tag是標記, priority是最小的優先級, 該標記標識的所有大於等於指定優先級的消息被寫入日誌。也可以在一個過濾器表達式中提供多個這樣的過濾,它們之間用空格隔開。

    下面給出的例子是僅輸出標記爲“ActivityManager”並且優先級大於等於“Info”和標記爲“MyApp”並且優先級大於等於“Debug”的日誌:

adb logcat ActivityManager:MyApp:*:S

    上述表達式最後的 *:S 用於設置所有標記的日誌優先級爲S,這樣可以確保僅有標記爲“View”(譯者注:應該爲ActivityManager,原文可能是筆誤)和“MyApp”的日誌被輸出,使用 *:S 是可以確保輸出符合指定的過濾器設置的一種推薦的方式,這樣過濾器就成爲了日誌輸出的“白名單”。

    下面的表達是顯示所有優先級大於等於“warning”的日誌:

adb logcat *:W

    如果在開發用電腦上運行 logcat (相對於運行運程shell而言),也可以通過ANDROID_LOG_TAGS環境變量設置默認的過濾器表達式:

export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"

    需要注意的是,如果是在遠程shell或是使用adb shell logcat 命令運行logcat  ANDROID_LOG_TAGS 不會導出到模擬器或手機設備上。

  控制日誌格式

        日誌消息在標記和優先級之外還有很多元數據字段,這些字段可以通過修改輸出格式來控制輸出結果, -v 選項加上下面列出的內容可以控制輸出字段:

brief — 顯示優先級/標記和原始進程的PID (默認格式)

process — 僅顯示進程PID

tag — 僅顯示優先級/標記

thread — 僅顯示進程:線程和優先級/標記

raw — 顯示原始的日誌信息,沒有其他的元數據字段

time — 顯示日期,調用時間,優先級/標記,PID

long —顯示所有的元數據字段並且用空行分隔消息內容

  可以使用 -v啓動 logcat來控制日誌格式:

[adb] logcat [-v <format>]

  例如使用 thread 輸出格式:

adb logcat -v thread

  注意只能在 -v 選項中指定一種格式。

  Viewing Alternative Log Buffers

        Android日誌系統爲日誌消息保持了多個循環緩衝區,而且不是所有的消息都被髮送到默認緩衝區,要想查看這些附加的緩衝區,可以使用-b選項,以下是可以指定的緩衝區:

radio — 查看包含在無線/電話相關的緩衝區消息

events — 查看事件相關的消息

main — 查看主緩衝區 (默認緩衝區)

-選項的用法:

[adb] logcat [-b <buffer>]

  例如查看radio緩衝區:

adb logcat -b radio
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章