在內核除錯中由一個符號的地址找到對應的符號名稱非常有助于我們對內核的除錯,下面將介紹4種方式來獲得內核符號資訊的4種方法,
1.從 System.map 檔案中得到地址
System.map檔案在編譯內核時生成,包含了內核在編譯時的靜態符號資訊,
grep do_fork /boot/System.map-4.15.0-128-generic
就可以通過do_fork函式名來獲得函式的地址

grep ffffffff810905b0 /boot/System.map-4.15.0-128-generic
就可以通過ffffffff810905b0地址來獲得該地址的函式名字

2.從 /proc/kallsyms 檔案中獲得地址
/proc/kallsyms檔案中包含了內核中的符號表,
cat /proc/kallsyms | grep do_fork
就可以通過do_fork函式名來獲得函式的地址
cat /proc/kallsyms | grep ffffffff810905b0
就可以通過ffffffff810905b0地址來獲得該地址的函式名字
3.使用 nm 命令從 vmlinux 讀取地址
vmlinux是內核編譯后產生的原始的檔案,包含除錯資訊,
nm vmlinux | grep do_fork
就可以通過do_fork函式名來獲得函式的地址
nm vmlinux | grep ffffffff810905b0
就可以通過ffffffff810905b0地址來獲得該地址的函式名字
4.通過內核提供的函式來獲得
kallsyms_lookup_name()
已知內核符號,獲取內核符號地址,
sprint_symbol()
已知內核符號地址, 獲取內核符號名,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/241449.html
標籤:其他
上一篇:遠程訪問及控制
