gdb debug linux module

665阅读 0评论2009-11-16 abelard2008
分类:LINUX

arm-none-linux-gnueabi-gdb vmlinux
target remote 192.168.0.75:2001
 
在这些信息中,我们关心的只有4个段的地址:.text、.rodata、.data、.bss。在development机上将以上地址信息加入到gdb中,这样 就能够进行模块功能的测试了。
(gdb) add-symbol-file /path to file/mod.ko 0xc88d8060 -s .data 0xc88d80a0 -s .bss 0xc88d833c
b func
Linux 2.6之后的内核中,由于module-init-tools工具的更改,insmod命令不再支持-m参数,只有采取其他的方法来获取模块加载到 内核的地址。通过分析ELF文档格式,我们知道程式中各段的意义如下:
.text(代码段):用来存放可执行文档的操作指令,也就是说是他是可执行程式在内存种的映像。
.data(数据段):数据段用来存放可执行文档中已初始化全局变量,也就是存放程式静态分配的变量和全局变量。
.bss(BSS段):BSS段包含了程式中未初始化全局变量,在内存中 bss段全部置零。
.rodata(只读段):该段保存着只读数据,在进程映象中构造不可写的段。
通过在模块初始化函数中放置一下代码,我们能够很容易地获得模块加载到内存中的地址。
上一篇:contex
下一篇:没有了