kernel panic 除錯方法 1

2021-06-27 12:52:55 字數 1095 閱讀 1262

kernel panic 表示

linux 

kernel

走到了乙個不知道該怎麼走下一步的狀況,一

旦到這個情況,

kernel

就盡可能把它此時能獲取的全部資訊都列印出來,至於能列印出多少

資訊。

下面講解幾種用於查詢出錯函式定位的方法

首先看一下出錯的kernel panic 現象,下面是乙個kernel panic的出錯log:

如上崩潰資訊,可知發生崩潰的函式為rb_init_debugfs,

崩潰的位址為0x804386f8

1>在

linux

下,到工程的如下目錄下:

kernel/linux,

找到檔案vmlinux,執行命令gdb vmlinux:

在gdb命令下執行如下命令即可查詢到出錯函式所在的檔案與行數

(gdb) b *0x804386f8

2>

如果不確定崩潰的位址是否是0x804386f8,

可以在檔案system.map中

查詢函式rb_init_debugfs

獲取該函式的位址,然後加上偏移位址(本例中偏移位址為0x14 rb_init_debugfs+0x14/0x70)即可。

3>直接函式名加偏移量也可以

(gdb) b *rb_init_debugfs+0x14

上面是出錯模組是編譯進核心的,對於編譯進核心的模組可以通過gdb vmlinux來確定出錯函式所在的檔案與行數。

那如果出錯模組是動態載入進核心的該怎麼辦呢?

這就需要使用objdump進行反彙編操作了,使用如下命令,就會將c語言與組合語言同時顯示(需要加-g命令)

#objdump -s  **.o -g

如果使用上面命令,還是只顯示彙編,而沒有c語言的話,不用擔心,在你編譯驅動模組的makefile中,編譯成.o檔案時,增加-g選項,對於新生成的.o檔案再使用上面的命令就 可以看到彙編與c語言共存了。然後根據kernel panic提示中顯示的函式名加上偏移量就能找到出錯行了。

深入 kernel panic 流程

我們在專案開發過程中,很多時候會出現由於某種原因經常會導致手機系統宕機重啟的情況 重啟分android重啟跟kernel重啟,而我們這裡只討論kernel重啟也就是kernel panic的情況 宕機重啟基本算是影響最嚴重的系統問題了,有穩定復現的,也有概率出現的,解題難度也千差萬別,出現問題後,通...

12 如何分析kernel panic?

description 當kernel發生異常時,會在重啟後生成對應的db,用gat的logviewer可以解開,如果是普通的ke或hwt,並且存在sys mini rdump或者sys coredump,則可以借助gdb crash進一步debug,否則只能檢視log分析問題的可能性了。solut...

關於linux啟動kernel panic錯誤解決

重灌系統未免太麻煩現推薦兩個解決方案 1.系統啟動的時候,按下 e 鍵進入grub編輯介面,編輯grub選單,選擇 kernel vmlinuz 2.6.23.1 42.fc8 ro root dev vogroup00 logvol00 rhgb quiet 一欄,按 e 鍵進入編輯,在末尾增加e...