gdb - 在Ubuntu 14.04上加载内核模块

时间:2015-07-06 19:55:58

标签: c linux linux-kernel gdb kernel

Ubuntu 14.04 LTS:

user@peterubuntu0:$ insmod mymodule
user@peterubuntu0:/sys/module/mymodule/sections$ cat .text .data .bss
0x0000000000000000
0x0000000000000000
0x0000000000000000

那么当我远程调试时,如何告诉gdb我的模块加载到目标机器上的哪个位置?我是否只在add-symbol-file命令中使用偏移量(对于.text然后是0x64或64十进制?)?

user@peterubuntu0:~$ objdump mymodule.ko --section-headers

mymodule.ko:     file format elf64-x86-64

Sections:
Idx Name          Size      VMA               LMA               File off  Algn
  0 .note.gnu.build-id 00000024  0000000000000000  0000000000000000  00000040  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  1 .text         0000b345  0000000000000000  0000000000000000  00000064  2**0
                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
 12 .data         000001e4  0000000000000000  0000000000000000  00012620  2**5
                  CONTENTS, ALLOC, LOAD, RELOC, DATA, LINK_ONCE_DISCARD
 15 .bss          00000014  0000000000000000  0000000000000000  00012a80  2**3
                  ALLOC

1 个答案:

答案 0 :(得分:0)

cat .text .data .bss仅在以 root 执行时返回数据部分的地址(对我有意义),否则返回0x0000000000000000:

user@peterubuntu0:~$ su
user@peterubuntu0:~$ 
root@peterubuntu0:~$ cat .text .data .bss
root@peterubuntu0:~$ 0xffffffffa0518000
root@peterubuntu0:~$ 0xffffffffa073b000
root@peterubuntu0:~$ 0xffffffffa089b460