天天看點

展訊平台 Sysdump log解析

一.初步定為分析

在ylog的phone.info中搜尋關鍵詞 bootmode

例如:

[ro.bootmode]: [panic]

可以确定是kenel panic導緻的手機重新開機

 二.Kernel Panic的産生的原因

panic 是英文中是驚慌的意思,Linux Kernel panic正如其名,linux kernel不知道如何走了,它會盡可能把它此時能擷取的全部資訊都列印出來。

有兩種主要類型kernel panic,後面會對這兩類panic做詳細說明:

1.hard panic(也就是Aieee資訊輸出)

2.soft panic (也就是Oops資訊輸出)

2. 常見Linux Kernel Panic報錯内容:

(1) Kernel panic-not syncing fatal exception in interrupt

(2) kernel panic – not syncing: Attempted to kill the idle task!

(3) kernel panic – not syncing: killing interrupt handler!

(4) Kernel Panic – not syncing:Attempted to kill init !

三.發送Kernel Panic該怎麼辦

1.首先需要自己拉代碼編譯user版本的項目,并預設開啟sysdump(sysdump在userdebug版本中預設開啟的)

修改以下代碼

device\sprd\xxxx\common\rootdir\root\init.common.rc

在 on post-fs-data 下添加:

// 設定 Ylog 預設開啟開關 1 開啟,0或不寫 關閉
setprop persist.ylog.enabled 1
start ylog
// 設定sysdump 預設開關屬性值 開啟為true  關閉 false
setprop debug.sysdump.enabled true
setprop persist.sys.eng.reset 0
           

2.插入SD卡 抓取Sysdump log,一定插入大于8G的T卡,并事先清空,保證足夠大的記憶體

展訊平台 Sysdump log解析

3.sysdump log 分析

1)将ylog-ap-SYSDUMP下的sysdump.core.*複制到對應項目的vendor\sprd\tools\crash下

展訊平台 Sysdump log解析

2)将out/target/product/xxxx/obj/KERNEL/下的vmlinux也copy到vendor\sprd\tools\crash下

展訊平台 Sysdump log解析

3)cd到vendor\sprd\tools\crash,檢視是否copy成功

展訊平台 Sysdump log解析

4)cat sysdump.core.* >log(log是檔案名,可以随意起),将所有的sysdump.core檔案內建到一個檔案中

展訊平台 Sysdump log解析

5)ls 檢視是否內建檔案生成

展訊平台 Sysdump log解析

6)執行指令  ./crash_arm vmlinux log(這裡的log指第四步中建立的內建檔案),使用 crash_arm 腳本 和 vmlinux 解析 sysdump log

展訊平台 Sysdump log解析

7)log >aaa.txt,此處的log是執行指令,将log輸入到aaa.txt檔案中

展訊平台 Sysdump log解析

8)分析生成的aaa.txt

展訊平台 Sysdump log解析

可以看出是Fatal exception, sprd_sysdump_info->crash_key: 0導緻的reboot