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...