我们举例加以介绍:假设想调试目标主机上的pf.ko,先去目标主机获得以下东西:
- $ kldstat
- Id Refs Address Size Name
- 1 2 0xffffffff80100000 b4afb8 kernel
- 2 1 0xffffffff80e22000 2b150 pf.ko
然后再开发机上按-g方式编译模块,编译好之后,要用objdump查看,找到在内核模块中,文本段的偏移量
- [root@fb73_vm114 /usr/src/sys/modules/pf]# objdump --section-headers ./pf.ko | grep text
- 0 .text 0002776f 0000000000000000 0000000000000000 00000040 2**4
这时把内核模块的符号加入gdb
- (kgdb) add-symbol-file /usr/src/sys/modules/pf/pf.ko 0xFFFFFFFF80E22040
- add symbol table from file "/usr/src/sys/modules/pf/pf.ko" at
- .text_addr = 0xffffffff80e22040
- (y or n) y