精品秘无码一区二区三区老师-精品秘一区二三区免费雷安-精品蜜桃秘一区二区三区-精品蜜桃秘一区二区三区粉嫩-精品蜜桃一区二区三区-精品蜜臀国产aⅴ一区二区三区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

安卓開發(fā)日志采集和分析面面談

freeflydom
2024年6月3日 16:11 本文熱度 2367

為什么需要日志

復(fù)現(xiàn)問題,回溯到問題產(chǎn)生時候的系統(tǒng)狀態(tài),有利于定位和分析問題。

安卓日志有哪些?

cpu

關(guān)注的緯度:

  • 單個應(yīng)用使用

  • 系統(tǒng)cpu分配

  • 溫度

有什么用:

  1. App卡頓、ANR

  2. App異常退出

怎么用:

1.應(yīng)用使用

adb shell dumpsys activity processes  >> D:\app_process.log
adb shell COLUMNS=512 top -n 1 -s cpu >>D:\cpu.log
adb shell COLUMNS=512 top -n 1 -s vss  >>D:\cpu_vss.log
adb shell COLUMNS=512 top -n 1 -s thr  >>D:\cpu_thr.log
  1. CPU內(nèi)存

adb shell dumpsys cpuinfo >> D:\cpu_meminfo.log
  1. CPU溫度

adb shell cat /sys/class/thermal/thermal_zone0/temp >> D:\cpu_tmp.log

內(nèi)存存儲器

關(guān)注的緯度:

  • 系統(tǒng)內(nèi)存分配情況

    • adb shell COLUMNS=512 top -n 1 -s vss

    • adb dumpsys meminfo

  • 單個應(yīng)用內(nèi)存分配情況

    • profile->memory->hprof

    • adb shell dumpsys meminfo com.xx

    • leakcanary

有什么用:

幫助定位內(nèi)存抖動、內(nèi)存溢出、內(nèi)存泄漏的問題

怎么用:

  1. 系統(tǒng)內(nèi)存

adb shell dumpsys meminfo >> D:\system_meminfo.log
  1. 指定app內(nèi)存

adb shell dumpsys meminfo  com.xx >>>> D:\com.xx_meminfo.log
adb shell am dumpheap com.xx/data/anr/Launcher.hprof

任務(wù)棧

關(guān)注的緯度:

  • Ams Stack

  • Service Stack

  • Broadcast

有什么用:

關(guān)注界面上啟動過的Activity、Service、Broadcast,分析頁面導(dǎo)航異常、頁面加載異常、后臺任務(wù)異常的問題

怎么用:

1.activity

adb shell dumpsys activity >> D:\AmsStack.log

2.廣播

adb shell dumpsys activity broadcasts >>D:\broadcasts.log

3.服務(wù)

adb shell dumpsys activity services >>D:\services .log

anr

關(guān)注的緯度:

  • 系統(tǒng)anr日志

  • Blockcanary日志

有什么用:

分析App無響應(yīng)的原因、App被殺死的原因

怎么用:

adb pull /data/anr D:\2021\

trace

關(guān)注的緯度:

  • trace日志

有什么用:

分析App無響應(yīng)的原因、App被殺死的原因

Log

關(guān)注的維度:

  • Systemlog

  • Eventlog

  • kernellog

怎么用:

  1. logcat輸出

adb logcat -v time >D:\log.txt
  1. dev/log導(dǎo)出

adb pull /dev/log/ D:\ohters\

該目錄有4種文件

  • radio:輸出通訊系統(tǒng)(無線/電話相關(guān))的log。

  • system:輸出系統(tǒng)緩沖區(qū)的log。

  • events:輸出事件緩沖區(qū)的log。

  • main:全部java層的log, 也是主緩沖區(qū) (默認緩沖區(qū))。

3.其他路徑的日志按需導(dǎo)出

  • /data/local/tmp/*

  • /data/tmp/*

  • /data/system/usagestats/*

  • /data/system/appusagestates/*

  • /data/system/dropbox/*

  • /data/tombstones/*

  • /data/anr/*

綜上可以看到,要抓的日志真是太多了,抓起來麻煩,看起來匯總分析也麻煩,那么有沒有一個現(xiàn)成工具供我們收集和分析呢,答案是有!安卓系統(tǒng)提供了Bugreport!

日志閱讀的思路

第一步:定位進程死亡的時間點,參考《進程-確定進程死亡時間》
第二步:假設(shè)進程死亡的原因,設(shè)置懷疑點,根據(jù)經(jīng)驗搜索關(guān)鍵字。
第三步:復(fù)現(xiàn)出現(xiàn)異常的步驟,驗證懷疑點是否正確

日志解析工具Bugreport

如何用

  1. 導(dǎo)出日志

    adb bugreport 1>>D:\ohters\bugreport.log
  2. 下載ChkBugReport.jar

  3. 生成html報告

    java -jar ./chkbugreport.jar ./bugreport.log

可能遇到的問題:
Failed to get bugreportz version, which is only available on devices running Android 7.0 or later. Trying a plain-text bug report instead.
解決步驟:

  1. 下載21版本的adb

  2. 關(guān)閉正在運行的高版本adb adb kill-server

  3. 指定21版本的adb來捕獲日志D:\ohters\adb bugreport 1>>D:\ohters\bugreport.log

有什么用

輸出到Android系統(tǒng)的Bugreport包含系統(tǒng)服務(wù) (dumpsys)、錯誤日志 (dumpstate) 和系統(tǒng)消息日志 (logcat) 的診斷輸出。系統(tǒng)消息包括設(shè)備拋出錯誤時的堆棧軌跡,以及從所有應(yīng)用中使用 Log 類寫入的消息。
配合安卓工具ChkBugReport可以將日志信息可視化顯示到靜態(tài)頁面種。

日志分析經(jīng)驗積累

日志閱讀的思路

第一步:定位進程死亡的時間點,參考《進程-確定進程死亡時間》
第二步:假設(shè)進程死亡的原因,設(shè)置懷疑點,根據(jù)經(jīng)驗搜索關(guān)鍵字。
第三步:復(fù)現(xiàn)出現(xiàn)異常的步驟,驗證懷疑點是否正確

關(guān)鍵字附錄參考
搜索 Fatal
搜索 uncaughtException
搜索 crashreport
搜索 Exception
搜索 Application Not Response
搜索 NetworkOnMainThreadException
搜索 ANR Warning
搜索 AnrManager
搜索 Anr in

13種常見進程死亡原因

  1. java層的崩潰

    • 通過java層logcat看是否崩潰(crashHandler或者調(diào)試版logcat)

    • 如果java層沒有任何相關(guān)日志打印就從c層看(在bugreport.zip->FS->data->tombstones->對應(yīng)時間的日志)

  2. 低內(nèi)存原因

    • 搜索關(guān)鍵字lowmemorykiller

    • 導(dǎo)出內(nèi)存日

  3. 被其他進程殺死

    • Android11我們可以通過在bugreport日志文件里面搜索Historical Process Exit for關(guān)鍵字,就能看到自己的進程被誰殺死。

  4. 懷疑是進程已經(jīng)不活動了被系統(tǒng)殺

    06-10 13:32:13.057 1000 1700 1812 I am_kill : [0,2409,com.miui.screenrecorder,955,empty for 1800s]
    • 搜索關(guān)鍵字empty for

  5. epmty進程被殺,系統(tǒng)內(nèi)empty進程數(shù)量達到閾值26(不同手機略有不同)會按時間順序查殺進程,搜索關(guān)鍵字empty ;

    06-10 16:00:54.244 1000 1700 1795 I ActivityManager: Killing 20081:com.android.providers.calendar/u0a72 (adj 985): empty #26
  6. 自己退出,結(jié)束自己,搜索關(guān)鍵字: exited 、cleanly
    有時候應(yīng)用退出不一定是因為奔潰,可能是程序員代碼沒寫對或者漏掉了一些環(huán)境細節(jié)讓應(yīng)用主動退出了。除了看ApplicationExitInfo外我們還能通過logcat看到。

    06-10  10:17:04.053 root 689 689 I Zygote : Process 29263 exited cleanly (0)
    06-10  10:17:04.056 1000 1692 1805 I libprocessgroup: Successfully killed process cgroup uid 10252 pid 29263 in 122ms
    06-10  10:17:03.933 1000 1692 5189 I ActivityManager: Process com.tencent.tmgp.pubgmhd (pid 29263) has died: hvy HVY
  7. 被系統(tǒng)進程殺掉
    系統(tǒng)app調(diào)用forceStopPackage 接口,殺掉我們的應(yīng)用,我們搜索stop com.xxx.aaa due to from process

    06-15 19:34:10.498 26589 29585 I ActivityManager: Killing 14459:com.xiaomi.misubscreenui/1000 (adj 0): stop com.xiaomi.misubscreenui due to from process:com.miui.voiceassist
  8. 線程過度使用CPU導(dǎo)致所在進程被殺
    上次adj降為Service以下到現(xiàn)在經(jīng)歷2221553 ms,cpu POWER_CHECK_MAX_CPU_4 = 2, 兩次檢測時間間隔為300044 ms,使用cpu時間為16720ms,超過2%,就會被殺。

    06-06 18:07:44.445 1000 1651 1798 I am_kill : [0,22157,com.ximalaya.ting.android,900,excessive cpu 16720 during 300044 dur=2221553 limit=2]
    	06-06 18:07:44.445 1000 1651 1798 I ActivityManager: Killing 22157:com.ximalaya.ting.android/u0a239 (adj 900): excessive cpu 16720 during 300044 dur=2221553 limit=2
    	06-06 18:07:44.566 root 681 681 I Zygote : Process 22157 exited due to signal 9 (Killed)
  9. 線程異常所在進程被殺,進程的某個線程發(fā)生異常,自己發(fā)Signal 9信號給Zygote 殺掉自己,搜索關(guān)鍵字 Sending signal

    06-07 16:53:03.027 1000 2566 2582 I Process : Sending signal. PID: 2566 SIG: 9
    06-07 16:53:03.154 root 681 681 I Zygote : Process 2566 exited due to signal 9 (Killed)
    06-07 16:53:03.167 1000 1734 4006 I ActivityManager: Process com.android.systemui (pid 2566) has died: pers PER
  10. 應(yīng)用重裝,被殺,搜索關(guān)鍵字Force stopping、installPackageLI、deletePackageX

    06-10 15:59:30.827 1000 1700 1812 I ActivityManager: Force stopping com.google.android.gms appid=10190 user=-1: installPackageLI
    06-10 15:59:30.984 1000 1700 1812 I ActivityManager: Killing 3876:com.google.android.dialer/u0a180 (adj -700): stop com.google.android.gms: installPackageLI
  11. ANR被殺

  12. OOM被殺

  13. 死鎖被殺,搜索關(guān)鍵字Force finishing 、Force removing、Force stopping


轉(zhuǎn)自https://www.cnblogs.com/jincheng-yangchaofan/p/18225812


該文章在 2024/6/3 16:20:27 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国内精品玖玖玖玖电影院 | 国产成人一区二区三区毛片 | 婷婷色婷婷开心五月四房播播 | 欧美日本亚欧在线观看 | 亚洲一区二区三区波野多结衣。 | 日日夜夜精品视频天天7799动漫 | 国产成人精品无码免费播放 | 亚洲欧美中文字幕高清在线 | 加勒比久久综合久久鬼色88 | 国产字幕制服中文在线 | 欧美激情一区二区三区视频 | 精品视频一区二区三区在线观看 | 日韩欧美精品有码在线 | 午夜无码久久不卡 | 亚洲av网站在线免费观看 | 国精产品99永久中国有限公司 | 亚洲精品无码av人在线播放 | 亚洲av无码乱码在 | 国产欧美日韩中文久久擁有海量影視資源 | 亚洲av成人片无码 | 亚洲av专区无码观看精品天堂 | 园产精品久久久一级毛片 | 无码人妻AV一区二区三区蜜臀 | 欧美日韩国产其他 | 国产无遮挡裸体免费视频在线观看 | 亚洲第一区无码专区 | 欧美黑人猛性暴交 | 白丝护士高潮喷水免费网站 | 亚洲AV优女天堂熟女 | 欧美巨大另类极品video | 91亚色视频在线观看 | 欧美成人xx禁片在线观看 | 护士人妻hd中文字幕 | 精品人妻v中文字幕乱码 | 国产午夜精品av一区二区麻豆 | 久久亚洲精品ab无码播放 | 久久精品国产亚洲av麻豆甜 | 永久免费精品视频网站 | 日韩欧无码免费播放 | 性欧美XXⅩ澳门永久成人免费网站 | 国产在线秘麻豆精品观看 |