System.map

在Linux中,System.map檔案是被内核所使用的符号表。

符號表是一個在符號名稱與它們的記憶體位置間的查詢表格。符號名稱可能是變數的名稱或是函數名稱。當要查詢符號名稱的位置或是特定位置的符號名稱時,就會需要System.map。對於内核错误及内核oops的除錯特別有用。當CONFIG_KALLSYMS啟用時,核心會自行做位置到名稱的轉換,所以像是ksymoops這一類的工具並不是必要的。

內部
以下是System.map檔案的一部份內容:

因為位置在每次構建時都會變動,所以核心每一次新的構建都會產生新的System.map。

符號類型
在位置及符號中間的字符(以空格分開)是符號的類型。UNIX操作系统上的nm工具程式列出了所有目標檔案的符號。而System.map則是直接與其相關,因為這個檔案是在整個核心程式上由nm所產生的 - 就像nm列出任意小的目標程式的符號及它們的類型。

這些類型的一部份:

  • 像是 /boot/System.map-$(uname -r)
  • 在構建SVGALib時預期會找到/lib/modules/$(uname -r)/build/System.map

参考文献
參見

  • 内核oops
  • 内核错误

评论 (0)

  • 还没有评论,来抢沙发吧。