天天看點

mtk log分析

版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結和本聲明。

本文連結:https://blog.csdn.net/Zed_Faker/article/details/77159593

部落格:http://www.cnblogs.com/xiyuan2016/p/6740521.html

ZZ_INTERNAL  相關資訊及解釋

ANR,2173,-1361051648,99,/data/core/,1,system_app_anr,android.process.media,Tue Jul  4 18:51:03 HKT 2017,1

ZZ_INEERNAL包含10列,每列之間用,隔開

第一列:exception class,有KE/NE/JE/EE等

第二列:pid

第三列:tid

第四列:固定是99

第五列:固定是/data/core

第六列:exception level,0: fatal, 1: exception, 2: warning, 3: reminding

第七列:exception type info string;

如果是NE,則這個欄位是signal名稱,比如:SIGSEGV,

KE則為空,

SWT則為:system_server_watchdog,等等。

第八列:module name or process name

第九列:UTC time

第十列:固定是1

trace部分資訊解析

----- pid 2173 at 2017-07-04 11:51:32 -----

Cmd line: android.process.media

“main” prio=5 tid=1 Native

“Binder:2173_1” prio=5 tid=9 Blocked

  | group=“main” sCount=1 dsCount=0 obj=0x22c05430 self=0xa1fcab00

  | sysTid=2186 nice=10 cgrp=bg_non_interactive sched=0/0 handle=0xa497a920

  | state=S schedstat=( 26942858 122825452 281 ) utm=0 stm=2 core=0 HZ=100

  | stack=0xa487e000-0xa4880000 stackSize=1014KB

  | held mutexes=

  at com.android.providers.media.MediaProvider.getParent(MediaProvider.java:4118)

  - waiting to lock <0x06de4cd2> (a java.util.HashMap) held by thread 13

  at com.android.providers.media.MediaProvider.insertFile(MediaProvider.java:4395)

  at com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:4662)

  at com.android.providers.media.MediaProvider.insert(MediaProvider.java:4015)

  at android.content.ContentProvider$Transport.insert(ContentProvider.java:272)

  at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:163)

  at android.os.Binder.execTransact(Binder.java:570)

1)pid 2173 at 2017-07-04 11:51:32  

  >>>>ANR發生的程序的ID,時間點

2)Cmd line: android.process.media  

  >>>>ANR發生的程序的名稱

3)“main” prio=5 tid=1 Native 

  >>>>說明線程名,線程的優先級,線程鎖ID和線程狀态.

  線程名稱是啟動線程的時候手動指明的,這裡的main标示是主線程,

  是Android自動設定的一個線程名稱,如果是自己手動建立的線程,

  一般會被命名成“Thread-xx”的格式,啟動xx是線程ID,他隻增不減

  不會被複用;注意這啟動的tid不是線程的id,他是一個在Java虛拟機

  中用來實作線程鎖的變量,随着線程的增減,這個變量的值是可能被

  複用的;

4)group=“main” sCount=1 dsCount=0 obj=0x22c05430 self=0xa1fcab00

  >>>>group是線程組名稱。

  sCount是此線程被挂起的次數,

  dsCount是線程被調試器挂起的次數。

  當一個程序被調試後,sCount會重置為,調試完畢後sCount會根據是否

  被正常挂起增長,但是dsCount不會被重置為0,是以dsCount也可以用來

  判斷這個線程是否被調試過,obj表示這個線程的Java對象位址,self表

  示這個線程本身的位址。

5)此後是線程的排程資訊

| sysTid=2186 nice=10 cgrp=bg_non_interactive sched=0/0 handle=0xa497a920

  sysTid是Linux下的核心線程ID,

  nice是線程排程的優先級.

  sched分别标志了線程的排程政策和優先級,

  cgrp是排程屬組,

  handle是線程的處理函數位址。

6)線程目前上下文資訊

 | state=S schedstat=( 26942858 122825452 281 ) utm=0 stm=2 core=0 HZ=100

  state是排程狀态;

  schedstat從 /proc/[pid]/task/[tid]/schedstat讀出

  三個值分别表示線程在cpu上執行的時間、線程的等待時間和線程執行的時間片長度;

  有的android核心版本不支援這項資訊,得到的三個值都是0;utm是線程使用者态下使

  用的時間值(機關是jiffies);stm是核心态下的排程時間值;core是最後執行這個線程

  cpu核的序号

7)最後就是這個線程的排程棧資訊。

  一般可以通過以下幾個簡單的方法來判斷

  *trace檔案頂部的線程一般是ANR的元兇。

  *這是一個簡單的方法,大部分情況下都适用,可以通過這個方法來快速判斷是否是自己

   的應用造成了本次的ANR,但是并不是trace檔案包含的應用就一定是造成ANR的幫兇,應

   用出現在trace檔案中,隻能說明出現ANR的時候這個應用程序還活着,trace檔案的頂部

   則是觸發ANR的應用資訊,是以如果你的應用出現在trace檔案的頂部,那麼很有可能是

   因為你的應用造成了ANR,否則是你的應用造成ANR的可能性不大,還需要進一步分析。

8)如果定位不到時間點,可以看CPU 

  (sys_log)07-04 18:51:03.209156  1044  1068 E ANRManager: 3.4% TOTAL: 0.5% user

     + 2.6% kernel + 0.2% irq 

   從CPU使用率可以看出:

   *如果使用量很高,說明目前裝置很忙(記憶體不足,循環處理)

   *如果CPU使用量很少,說明主線程被BLOCK了

   *如果IOwait很高,說明ANR有可能是主線程在進行I/O操作造成的(資料庫、檔案操作、

    網絡操作等)      

9)等待鎖引起的ANR

  找到WallpaperManager對應代碼,再結合main log等其他資訊,看tid=27的thread在忙

  什麼。

10)SWT重新開機問題分析

  SWT是指Android Watchdog Timeout,應用層看門狗逾時,通常我們說的WDT是HWT,硬體

  看門狗逾時。

  1.Watchdog的目的是監控系統幾個比較主要的service,比如NetworkManagementService,

  PowerManagerService,ActivityManagerService等。這些Service在啟動時通過調用

  Watchdog。getInstance().addMonitor(this);加入到Watchdog的監控清單中,如果超過

  一定時間沒有反應,認為系統出錯,會強制啟動Android。

  2.Watchdog原理:/framework/base/services/java/com/android/server/Watchdog.java

  3.具體分析方法

    *首先從enventlog中以watchdog為關鍵字搜尋,記錄下這個時刻

      17:25:23.645459 950 1285 I watchdog:surfaceflinger hang.

    *然後分析所有Service Object的monitor()為何在這個時刻之前1分鐘沒有做完,

    *後面具體分析方法和ANR一樣

    *ANR是某個AP的主線程在一段時間内沒有完成某件事情,

    *Android Watchdog 是SystemServer程序的ServerThread 線程在一段時間内沒有做完

     某件事情。

radio_log分析網絡狀況

06-30 10:38:06.572525 938 976 I AT : AT< +ECSQ: 22,54,1,1,1,-36,-346,7,39 (RIL_URC_READER, tid:0)

06-30 10:38:06.572737 938 976 I RILC : RIL_SOCKET_1 UNSOLICITED: UNSOL_SIGNAL_STRENGTH length:72

06-30 10:38:06.573125 938 998 I RIL : [GSM MAL] URC send success, rid 0, ret 0:                                             #F5F6FA

06-30 10:38:06.573125 938 998 I RIL : +ECSQ: 22,54,1,1,1,-36,-346,7,39

06-30 10:38:06.574384 1028 1067 D RilMalClient: UNSOL_TO_MAL: remap to unsol resp(1009)

06-30 10:38:06.575465 1028 1067 D RpRilClientController: leave blocking write

06-30 10:38:06.575605 1028 1067 D RpRilClientController: leave blocking write

06-30 10:38:06.576133 1425 1425 D SST : [GsmSST0] handle EVENT_SIGNAL_STRENGTH_UPDATE

06-30 10:38:06.576410 1425 1425 W SignalStrength: Signal before validate=SignalStrength: 0 54 -1 -1 -1 -1 -1 99 86 9 97 2147483647 2147483647 gsm|lte 2147483647 2147483647 2147483647

06-30 10:38:06.576526 1425 1425 W SignalStrength: Signal after validate=SignalStrength: 0 54 -120 -160 -120 -1 -1 99 -86 -9 97 2147483647 2147483647 gsm|lte 2147483647 2147483647 2147483647

06-30 10:38:06.577794 1010 1367 D TelephonyRegistry: notifySignalStrengthForPhoneId: callback.onSsS r={callingPackage=android binder=android.telephony.PhoneStateListener I P h o n e S t a t e L i s t e n e r S t u b @ d 4 b 4 e d c c a l l b a c k = a n d r o i d . t e l e p h o n y . P h o n e S t a t e L i s t e n e r IPhoneStateLis[email protected] callback=android.telephony.PhoneStateListener IPhoneStateListenerStub@d4b4edccallback=android.telephony.PhoneStateListener[email protected] onSubscriptionsChangedListenererCallback=null callerUserId=0 subId=2147483647 phoneId=-1 events=1c1 canReadPhoneState=true} subId=3 phoneId=0 ss=SignalStrength: 0 54 -120 -160 -120 -1 -1 99 -86 -9 97 2147483647 2147483647 gsm|lte 2147483647 2147483647 2147483647

06-30 10:38:06.578163 1010 1367 D TelephonyRegistry: notifySignalStrengthForPhoneId: callback.onSsS r={callingPackage=com.android.systemui [email protected] callback=com.android.internal.telephony.IPhoneStateListener S t u b Stub Stub[email protected] onSubscriptionsChangedListenererCallback=null callerUserId=0 subId=3 phoneId=0 events=101e1 canReadPhoneState=true} subId=3 phoneId=0 ss=SignalStrength: 0 54 -120 -160 -120 -1 -1 99 -86 -9 97 2147483647 2147483647 gsm|lte 2147483647 2147483647 2147483647

06-30 10:38:06.578577 1010 1367 I use-Rlog/RLOG-GSM: getLTELevel - rsrp:-86 snr:97 rsrpIconLevel:3 snrIconLevel:3

06-30 10:38:06.578693 1010 1367 W SignalStrength: getLevel=3

06-30 10:38:06.579533 1305 1531 I use-Rlog/RLOG-GSM: getLTELevel - rsrp:-86 snr:97 rsrpIconLevel:3 snrIconLevel:3

06-30 10:38:06.582788 1305 1531 W SignalStrength: getLevel=3

06-30 10:38:06.588566 1305 1531 I use-Rlog/RLOG-GSM: getLTELevel - rsrp:-86 snr:97 rsrpIconLevel:3 snrIconLevel:3

06-30 10:38:06.589489 1305 1531 W SignalStrength: getLevel=3

  3G modem:

+ECSQ: , , (2G網絡)

  +ECSQ: , , , , <ec/no> (3G網絡)

  4G modem:

  +ECSQ: , , , ,1,1,1, (2G網絡)

  +ECSQ: , , , , <ec/no>,1,1, (3G網絡)

  +ECSQ: , ,1,1,1,<rsrq_qdbm >,<rsrp_qdbm> (4G網絡)

看+ECSQ 指令帶的值:

  *如果第六第七位不是255 or 1 則目前在LTE狀态,

  *如果第四第五位不是255 or 1 則目前在3G mode。

  *2G的話不是很清楚怎麼看radio log,一般是在modem log裡确認的。

  +ECSQ:,,<rssi_in_qdbm>,<rscp_in_qdbm>,<ecn0_in_qdbm>,

  <rsrq_in_qdbm>,<rsrp_in_qdbm> ,

從radio log看,手機應該在

  4G mode時。如果 SNR<0 (RSRQ<-60dbm),則信号很差。

  3G mode時, EcN0<-15 (RSCP<-115dbm)時信号很差

  2G mode時,2G:rssi< -95dbm 、 rscq > 4 (0~7 ,0最好,7最差)

ANR 問題分析流程

1.定位問題點

  a)使用mobile log

    *events_log中搜尋am_anr

    *main_log 或 Sys_log 中搜尋ANR in

    *traces.txt中查找相應的PID或者程序名

  b) 使用anr db檔案 

    *使用gat工具打開db檔案

    *檢視ZZ_INTERNAL檔案 找到pid或者程序名

    *在SWT_JBT_TRACES查找pid

2.在mainlog中檢視cpu

  *一般在trace就能看到問題點,如果還是定位不到,就需要在mainlog中搜尋TOTAL:

  檢視CPU使用率  進而确認問題

————————————————

版權聲明:本文為CSDN部落客「Zed_Faker」的原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/Zed_Faker/article/details/77159593

MTK