crash —— 内核符号和地址直接相互转换

发布时间 2023-09-24 12:30:23作者: 摩斯电码

通过sym可以将内核地址转换成内核符号,或者将内核符号转换成内核地址。

根据地址转换为符号

  • 函数地址
crash> sym ffffffff8166f300
ffffffff8166f300 (T) blk_update_request+16 /home/pengdl/x86_64/linux-6.2/block/blk-mq.c: 896
  • 全局变量
crash> sym -q panic_on_o
ffffffff83968fa8 (D) panic_on_overflow
ffffffff844c3dc4 (B) panic_on_oops
ffffffff85001110 (b) sysctl_panic_on_oom
crash> sym panic_on_oops
ffffffff844c3dc4 (B) panic_on_oops

将符号转换为地址

  • 函数
crash> sym -q blk_update_request
ffffffff8166f2e0 (T) __pfx_blk_update_request
ffffffff8166f2f0 (T) blk_update_request
ffffffff82165cbc (t) blk_update_request.cold.77
ffffffff82f4c090 (r) __ksymtab_blk_update_request
ffffffff82f6d89b (r) __kstrtab_blk_update_request
ffffffff82f7ac70 (r) __kstrtabns_blk_update_request
crash> sym blk_update_request
ffffffff8166f2f0 (T) blk_update_request /home/pengdl/x86_64/linux-6.2/block/blk-mq.c: 893
  • 全局变量
crash> sym -q panic_on_o
ffffffff83968fa8 (D) panic_on_overflow
ffffffff844c3dc4 (B) panic_on_oops
ffffffff85001110 (b) sysctl_panic_on_oom
crash> sym panic_on_oops
ffffffff844c3dc4 (B) panic_on_oops

在输出时,还可以通过-pn参数实现在输出指定内核符号或者地址的同时,将紧跟他的前面和后面一个符号进行输出。

crash> sym -pn ffffffff8166f300
ffffffff8166f2e0 (T) __pfx_blk_update_request /home/pengdl/x86_64/linux-6.2/./arch/x86/include/asm/atomic.h: 67
ffffffff8166f300 (T) blk_update_request+16 /home/pengdl/x86_64/linux-6.2/block/blk-mq.c: 896
ffffffff8166f7b0 (T) __pfx_blk_mq_end_request /home/pengdl/x86_64/linux-6.2/./include/trace/events/block.h: 163

crash> sym -pn blk_update_request
ffffffff8166f2e0 (T) __pfx_blk_update_request /home/pengdl/x86_64/linux-6.2/./arch/x86/include/asm/atomic.h: 67
ffffffff8166f2f0 (T) blk_update_request /home/pengdl/x86_64/linux-6.2/block/blk-mq.c: 893
ffffffff8166f7b0 (T) __pfx_blk_mq_end_request /home/pengdl/x86_64/linux-6.2/./include/trace/events/block.h: 163

完。