2009年6月18日 星期四

Kernel panic

我在做嵌入式軟體的專案時,最常出現就是Kernel panic的問題。

Kernel panic的意思是指,OS遇到了一個內部的錯誤,這個錯誤並沒辦法被安全的修復起來,而導致沒辦法繼續運行,可能必須重新啟動才行。有點像Windows 的藍屏死機。

而造成Kernel panic的原因,大多是
是擴充記憶體出現問題,但亦有可能是其他硬體產生。在嵌入式系統環境下,可用的memory空間往往不夠,因此一旦kernel編譯出來,必需要去指定該用多少空間,不然一旦超出範圍,就一下子就當了。

Kernel panic產生時,往往很難知道到底哪邊出了錯,因此我在做debug的時候,只能利用debug工具,將產生的組語一行一行trace下去,看看到底執行到哪時會出錯。這很花時間,然而也不知道有什麼比較好的方式可以使用,因此是一項相當麻煩的問題。

2 則留言:

  1. Kernel panic 可以用 gdb 去追到C code, 或者 kernel source 我記得有一個script 可以parsing kernel oops. 但前題是要裝 kernel debuginfo. 照理說 Linux 廠商應該要提供

    回覆刪除
    回覆
    1. 找到了, kernel source 裏面這隻可以 parsing kernel oops:
      ./scripts/markup_oops.pl

      刪除