我在做嵌入式軟體的專案時,最常出現就是Kernel panic的問題。
Kernel panic的意思是指,OS遇到了一個內部的錯誤,這個錯誤並沒辦法被安全的修復起來,而導致沒辦法繼續運行,可能必須重新啟動才行。有點像Windows 的藍屏死機。
而造成Kernel panic的原因,大多是是擴充記憶體出現問題,但亦有可能是其他硬體產生。在嵌入式系統環境下,可用的memory空間往往不夠,因此一旦kernel編譯出來,必需要去指定該用多少空間,不然一旦超出範圍,就一下子就當了。
Kernel panic產生時,往往很難知道到底哪邊出了錯,因此我在做debug的時候,只能利用debug工具,將產生的組語一行一行trace下去,看看到底執行到哪時會出錯。這很花時間,然而也不知道有什麼比較好的方式可以使用,因此是一項相當麻煩的問題。
Kernel panic 可以用 gdb 去追到C code, 或者 kernel source 我記得有一個script 可以parsing kernel oops. 但前題是要裝 kernel debuginfo. 照理說 Linux 廠商應該要提供
回覆刪除找到了, kernel source 裏面這隻可以 parsing kernel oops:
刪除./scripts/markup_oops.pl