當前位置:首頁 » 安卓系統 » logandroid

logandroid

發布時間: 2023-02-10 06:41:07

㈠ 如何在android手機上查看log

使用cmd命令查看logcat 使用adb logcat命令可查看android系統和應用的log adb logca

㈡ android中的幾個log的功能及作用

android.util.Log常用的方法有以下5個:Log.v() Log.d() Log.i() Log.w() 以及 Log.e()
Log.v 的調試顏色為黑色的,任何消息都會輸出,這里的v代表verbose啰嗦的意思,平時使用就是Log.v("","");
Log.d的輸出顏色是藍色的,僅輸出debug調試的意思,但他會輸出上層的信息,過濾起來可以通過DDMS的Logcat標簽來選擇.
Log.i的輸出為綠色,一般提示性的消息information,它不會輸出Log.v和Log.d的信息,但會顯示i、w和e的信息
Log.w的意思為橙色,可以看作為warning警告,一般需要我們注意優化Android代碼,同時選擇它後還會輸出Log.e的信息。
Log.e為紅色,可以想到error錯誤,這里僅顯示紅色的錯誤信息,這些錯誤就需要我們認真的分析,查看棧的信息了。
以下是使用方法:
Log.v(LogDemo.ACTIVITY_TAG, "This is Verbose.");
Log.d(LogDemo.ACTIVITY_TAG, "This is Debug.");
Log.i(LogDemo.ACTIVITY_TAG, "This is Information");
Log.w(LogDemo.ACTIVITY_TAG, "This is Warnning.");
Log.e(LogDemo.ACTIVITY_TAG, "This is Error.");

㈢ Android 各種log 的介紹

包含設備日誌,堆棧跟蹤和其他診斷信息,可幫助您查找和修復應用中的錯誤。

安卓bugreport主要用於分析手機的狀態。其包含: main log , kernel log ,cpuinfo等信息。bugreport是一個可執行文件,編譯後的路徑為system/bin/bugreport,源碼位於framework/native/cmds/bugreport。其核心在於啟動mpsys服務。bugreport同mpstate服務建立socket通信(建立連接20次,超時3min無數據等容錯)。連接之後,將接收到的數據定向到文件中。

  因此我們看到的bugreport數據均來自mpstate。

bugreport通過socket與mpstate服務建立通信,在mpstate.cpp中的mpstate()方法完成核心功能。分別輸出: current log、 last log、 vm trace、 mpsys、 system info

 其詳細內容主要有: 系統build及運行時長等信息、 內存和CPU進程的信息、 kernel log、 system log、 radio log、 event log 等等。實際來說,bugreport中顯示的大部分為信息,都有對應的命令方式可以獲取。bugreport只是作為一個在不打擾用戶的前提下執行的一套命令集合。

    1). main_log    記錄手機android上層app以及framework相關活動的log,比如你寫的app列印的log,就在這裡面

    2). events_log    主要是ActivityManager、powerManager等相關的log

    3). kernel Log    驅動相關的log

Logcat是內置在Android系統中的一個可執行工具,用於轉儲系統消息日誌,其中包括設備引發錯誤時的堆棧追蹤以及從您的應用當使用 Log 類編寫的消息。可以在主機上通過adb logcat命令來查看模擬機上日誌信息。

Android tcpmp是命令行數據包捕獲實用程序。它可以捕獲來自您的Wi-Fi連接,蜂窩連接以及您在android設備上可能具有的任何其他網路連接的數據包

modem 是手機里負責搜網和sim卡數據操作底層模塊,每個手機都有,md log 用於分析掉網、掉話、無信號等問題

系統崩潰時留下的遺言,怎麼死的,死哪了,死的多慘。

當一個動態庫(native 程序)開始執行時,系統會注冊一些連接到 debuggerd 的 signal handlers,當系統 crash(崩潰) 的時候,會保存一個 tombstone 文件到/data/tombstones目錄下(Logcat中也會有相應的信息),文件的確就像墓碑一樣記錄了死亡了的進程的基本信息(例如進程的進程號,線程號),死亡的地址(在哪個地址上發生了 Crash),死亡時的現場是什麼樣的(記錄了一系列的堆棧調用信息)等等。

6. netlog    網路相關

看網路鏈接情況,抓取網路包等等

7. QXDM(the Qualcomm eXtensible Diagnostic Monitor)高通可擴展診斷監視器

該工具適用於擁有使用Qualcomm ASIC和試用硬體的設備的人,並允許他們測試,評估和潛在診斷其移動設備的RF性能問題。通常使用它來促進這些設備的產品開發。

使用該軟體,用戶可以查看他們的移動設備發出的所有信令消息,因為該軟體會生成它們的日誌。這些日誌也可以通過軟體進行注釋。可以將網路和電話參數的任何混合添加到屏幕,並且允許用戶在使用其參數時使用復雜的公式。該程序還實時生成大量統計數據,以便用戶可以更好地識別潛在的性能問題。用戶可以訪問Markov統計信息,Mux統計信息,RLP統計信息,塊錯誤率,移動性管理數據,尋呼和訪問統計信息,前向和反向鏈路統計信息等等。該程序還為用戶提供了攜帶型設備信號的圖形顯示。該程序與Windows操作系統兼容。

8. init Log(init進程log)

9. Crashlog(崩潰日誌)

㈣ 如何分析android log日誌

1 log文件分類簡介

實時列印 的主要有: logcat main , logcat radio , logcat events ,tcpmp ,還有高通平台的還會有 QXDM 日誌

狀態信息 的有: adb shell cat /proc/kmsg , adb shell dmesg , adb shell mpstate , adb shell mpsys , adb bugreport ,工程模式等

2 LOG抓取詳解

l 實時列印

adb logcat -b main -v time>app.log 列印應用程序的 log

adb logcat -b radio -v time> radio.log 列印射頻相關的 log , SIM STK 也會在裡面, modem 相關的 ATcommand 等,當然跟 QXDM 差的很遠了。

adb logcat -b events -v time 列印系統事件的日誌,比如觸屏事件。。。

tcpmp 是很有用的,對於 TCP/IP 協議相關的都可以使用這個來抓, adb shell tcpmp -s 10000 -w /sdcard/capture.pcap ,比如抓 mms 下載的時候的 UA profile, browser 上網的時候,使用 proxy 的 APN 下載, streaming 的相關內容包括 UA profile 等。

㈤ 如何分析Android的Log

首先,讓我們看一看AndroidLog的格式。下面這段log是以所謂的long格式列印出來的。從前面Logcat的介紹中可以知道,long格式會把時間,標簽等作為單獨的一行顯示。

[ 12-09 21:39:35.510 396: 416 I/ActivityManager ]

Start procnet.coollet.infzmreader:umengService_v1 for service
net.coollet.infzmreader/com.umeng.message.

UmengService:pid=21745 uid=10039 gids={50039, 3003, 1015,1028}

[ 12-09 21:39:35.518 21745:21745I/dalvikvm ]

Turning on JNI app bug workarounds fortarget SDK version 8...

[ 12-09 21:39:35.611 21745:21745D/AgooService ]

onCreate()

我們以第一行為例:12-09 是日期,21:39:35.510是時間396是進程號,416是線程號;I代表log優先順序,ActivityManager是log標簽。

在應用開發中,這些信息的作用可能不是很大。但是在系統開發中,這些都是很重要的輔助信息。開發工程師分析的log很多都是由測試工程師抓取的,所以可能有些log根本就不是當時出錯的log。如果出現這種情況,無論你怎麼分析都不太可能得出正確的結論。如何能最大限度的避免這種情況呢?筆者就要求測試工程師報bug時必須填上bug發生的時間。這樣結合log里的時間戳信息就能大致判斷是否是發生錯誤時的log。而且根據測試工程師提供的bug發生時間點,開發工程師可以在長長的log信息中快速的定位錯誤的位置,縮小分析的范圍。

同時我們也要注意,時間信息在log分析中可能被錯誤的使用。例如:在分析多線程相關的問題時,我們有時需要根據兩段不同線程中log語句執行的先後順序來判斷錯誤發生的原因,但是我們不能以兩段log在log文件中出現的先後做為判斷的條件,這是因為在小段時間內兩個線程輸出log的先後是隨機的,log列印的先後順序並不完全等同於執行的順序。那麼我們是否能以log的時間戳來判斷呢?同樣是不可以,因為這個時間戳實際上是系統列印輸出log時的時間,並不是調用log函數時的時間。遇到這種情況唯一的辦法是在輸出log前,調用系統時間函數獲取當時時間,然後再通過log信息列印輸出。這樣雖然麻煩一點,但是只有這樣取得的時間才是可靠的,才能做為我們判斷的依據。

另外一種誤用log中時間戳的情況是用它來分析程序的性能。一個有多年工作經驗的工程師拿著他的性能分析結果給筆者看,但是筆者對這份和實際情況相差很遠的報告表示懷疑,於是詢問這位工程師是如何得出結論的。他的回答讓筆者很驚訝,他計算所採用的數據就是log信息前面的時間戳。前面我們已經講過,log前面時間戳和調用log函數的時間並不相同,這是由於系統緩沖log信息引起的,而且這兩個時間的時間差並不固定。所以用log信息前附帶的時間戳來計算兩段log間代碼的性能會有比較大的誤差。正確的方法還是上面提到的:在程序中獲取系統時間然後列印輸出,利用我們列印的時間來計算所花費的時間。

了解了時間,我們再談談進程Id和線程Id,它們也是分析log時很重要的依據。我們看到的log文件,不同進程的log信息實際上是混雜在一起輸出的,這給我們分析log帶來了很大的麻煩。有時即使是一個函數內的兩條相鄰的log,也會出現不同進程的log交替輸出的情況,也就是A進程的第一條log後面跟著的是B進程的第二條log,對於這樣的組合如果不細心分析,就很容易得出錯誤的結論。這時一定要仔細看log前面的進程Id,把相同Id的log放到一起看。

㈥ 如何分析Android的Log

首先,讓我們看一看AndroidLog的格式。下面這段log是以所謂的long格式列印出來的。從前面Logcat的介紹中可以知道,long格式會把時間,標簽等作為單獨的一行顯示。

這個log就不那麼容易懂了,但是還是能從中看出很多信息,讓我們一起來學習如何分析這種log。首先看下面這行:


pid: 2102, tid: 2102,name: testapp >>>./testapp <<<

從這一行我們可以知道crash進程的pid和tid,前文我們已經提到過,Android調用gettid函數得到的實際是進程Id號,所以這里的pid和tid相同。知道進程號後我們可以往前翻翻log,看看該進程最後一次列印的log是什麼,這樣能縮小一點范圍。


接下來內容是進程名和啟動參數。再接下來的一行比較重要了,它告訴了我們從系統角度看,出錯的原因:


signal 11 (SIGSEGV), code 1(SEGV_MAPERR), fault addr 00000000


signal11是linux定義的信號之一,含義是Invalidmemory reference,無效的內存引用。加上後面的「faultaddr
00000000」我們基本可以判定這是一個空指針導致的crash。當然這是筆者為了講解而特地製造的一個Crash的例子,比較容易判斷,大部分實際的例子可能就沒有那麼容易了。


再接下來的log列印出了cpu的所有寄存器的信息和堆棧的信息,這裡面最重要的是從堆棧中得到的backtrace信息:


I/DEBUG ( 127):backtrace:


I/DEBUG ( 127): #00 pc0000045e /system/bin/testapp


I/DEBUG ( 127): #01 pc0000046b /system/bin/testapp


I/DEBUG ( 127): #02 pc0001271f /system/lib/libc.so (__libc_init+38)


I/DEBUG ( 127): #03 pc00000400 /system/bin/testapp


因為實際的運行系統里沒有符號信息,所以列印出的log里看不出文件名和行數。這就需要我們藉助編譯時留下的符號信息表來翻譯了。Android提供了一個工具可以來做這種翻譯工作:arm-eabi-addr2line,位於prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin目錄下。用法很簡單:


#./arm-eabi-addr2line -f
-eout/target/proct/hammerhead/symbols/system/bin/testapp0x0000045e


參數-f表示列印函數名;參數-e表示帶符號表的模塊路徑;最後是要轉換的地址。這條命令在筆者的編譯環境中得到的結果是:


memcpy
/home/rd/compile/android-4.4_r1.2/bionic/libc/include/string.h:108


剩餘三個地址翻譯如下:


main
/home/rd/compile/android-4.4_r1.2/packages/apps/testapp/app_main.cpp:38


out_vformat
/home/rd/compile/android-4.4_r1.2/bionic/libc/bionic/libc_logging.cpp:361


_start libgcc2.c:0


利用這些信息我們很快就能定位問題了。不過這樣手動一條一條的翻譯比較麻煩,筆者使用的是從網上找到的一個腳本,可以一次翻譯所有的行,有需要的讀者可以在網上找一找。

㈦ Android 手機中擴展名log是什麼文件

文件擴展名: .log
log意即日誌,通常是系統或者某些軟體對已完成的某種處理的記錄,以便將來做為參考,它並沒有固定的格式,通常是文本文件,可以用記事本打開以查看內容,當然很可能是其它格式,直接打開就是亂碼。大部分的log可以從文件名看出它的作用,比如uninstall.log或是error.log,當然前者通常是軟體安裝過程中生成的記錄,以便將來卸載的時候可以提供給卸載程序使用,後者通常是用來記錄一些軟體運行中的錯誤信息等等。
首先,會發現數量最多的是"i tall.log"文件,而且都在各個應用軟體的文件夾中,打開它,可以發現它詳細地記錄了安裝信息:軟體的源路徑、安裝時間、安裝的整個過程,安裝軟體時的每一個操作,都會在這兒留下記錄,包括向文件夾中拷貝".dll",對注冊表進行修改,如果有足夠耐心,完全可以通過它自己安裝軟體。其實它的重要作用是為刪除軟體作準備的。如果刪除或把這個文件從原來的文件夾中移開,在控制面板-添加/刪除程序中不能卸載這個軟體。它可由unwise.exe或它所在文件中的unwise.exe調用,假如執行unwise.exe文件,將會彈出對話框,要求提供"*.log",這類軟體有:netants,acdsee,ultraedit,jetcar以及很多游戲。例如在注冊表中關於NETANTS(網路螞蟻,一個國產的下載加速軟體)的卸載是這樣記錄的:
[HKEY_LOCAL_MACHINE\Software \Microsoft \Windows \CurrentVersion \Uni tall \NetAnts]
"Di layName"=" etAnt quot;
"Uni tallString"="D:\\NETANTS\\UNWISE.EXE D:\\NETANTS\\I TALL.LOG",這里是不是看得很明顯。
當然安裝軟體的記錄文件也並不一定都是用這個文件名I TALL.LOG,象vopt99中產生一個vopt.log 的文件,它也是由安卓下的unwise.exe調用來刪除軟體。

㈧ 如何分析android的log

1、如何在程序中打出Log 以及Log的分類區別 ?
verbose、debug、info、warning、error

2、給你一個Log文件,如何定位到問題所在?
1)如果是ANR問題 , 則搜索「ANR」關鍵詞 。 快速定位到關鍵事件信息 。
2)如果是ForceClosed 和其它異常退出信息,則搜索"Fatal" 關鍵詞, 快速定
位到關鍵事件信息 。

3)定位到關鍵事件信息後 , 如果信息不夠明確的,再去搜索應用程序包的虛擬
機信息 ,查看具體的進程和線程跟蹤的日誌,來定位到代碼 。
用這種方法,出現問題,根本不需要斷點調試 , 直接定位到問題,屢試不爽 。
下面,我們就開始來分析這個例子的log 。
(打開log文件 , 由於是ANR錯誤,因此搜索"ANR " , 為何要加空格呢,你加上
和去掉比較一下就知道了 。 可以屏蔽掉不少保存到anr.log文件的無效信息 。)

3、何時會產生ANR ?
1)界面操作(點擊按鈕):系統響應時間超過5秒
2)HandleMessage:處理時間超過10秒

4、log文件存在的目錄?
一般在data/log目錄下(真機才有)

5、一般哪幾種情況會產生log文件 ?
1)程序異常退出 , uncaused exception
2)程序強制關閉 ,Force Closed (簡稱FC)
3)程序無響應 , Application No Response (簡稱ANR)

㈨ Android Log等級的介紹

android.util.Log常用的方法有以下5個:Log.v() ,Log.d() ,Log.i() ,Log.w() ,Log.e() 。按照日誌級別從高到低為ERROR, WARN, INFO, DEBUG, VERBOSE.至於日誌級別本身的含義.

1.下面是對各種日誌級別的輸出介紹:

1、Log.v 的輸出顏色為黑色的,輸出大於或等於VERBOSE日誌級別的信息

2、Log.d的輸出顏色是藍色的,輸出大於或等於DEBUG日誌級別的信息

3、Log.i的輸出為綠色,輸出大於或等於INFO日誌級別的信息

4、Log.w的輸出為橙色, 輸出大於或等於WARN日誌級別的信息

5、Log.e的輸出為紅色,僅輸出ERROR日誌級別的信息.

Android的Log等級通常有五類,按照日誌級別由低到高分別是Verbose、Debug、Info、Warning、Error,其對應的log定義在system層。

1.V

Verbose就是冗長啰嗦的。通常表達開發調試過程中的一些詳細信息,用Log.v()輸出,不過濾地輸出所有調試信息。是最低級的Log可以不用管。

2.D

Debug來表達調試信息。用Log.d()輸出,能輸出Debug、Info、Warning、Error級別的Log信息。

3.I

Info來表達一些信息。用Log.i()輸出,能輸出Info、Warning、Error級別的Log信息。

4.W

Warning表示警告,但不一定會馬上出現錯誤,開發時有時用來表示特別注意的地方。用Log.w()輸出,能輸出Warning、Error級別的Log信息。

5.E

Error表示出現錯誤,是最需要關註解決的。用Log.e()輸出,能輸出Error級別的Log信息。

註:Info、Warnning、Error等級的Log在普通調試中不隨意濫用,存在發布版本中。在開發調試版本中,才會顯示全部等級。

熱點內容
羅技g502高級腳本 發布:2025-05-17 17:30:45 瀏覽:217
python解析post請求 發布:2025-05-17 17:27:19 瀏覽:696
社保測算密碼是什麼 發布:2025-05-17 17:25:09 瀏覽:157
phpini修改路徑 發布:2025-05-17 17:19:06 瀏覽:280
mac搭建php開發環境 發布:2025-05-17 17:18:22 瀏覽:782
佟大為關悅上超級訪問 發布:2025-05-17 17:09:50 瀏覽:310
閃迪存儲卡高速 發布:2025-05-17 17:09:14 瀏覽:470
ios文件加密插件 發布:2025-05-17 17:05:48 瀏覽:797
androidbutton自定義 發布:2025-05-17 16:58:34 瀏覽:169
android應用生命周期 發布:2025-05-17 16:53:16 瀏覽:779