5
我想调试我的内核模块。对于我试图把一个断点do_one_initcall
在kernel
/module.c
只是我init_module
之前被调用,但它显示通过KGDB调试模块
在地址无法访问内存 0x802010a0
下面是我的Makefile
使用:
obj-m := hello.o
KDIR=/lib/modules/$(shell uname -r)/build
PWD=$(shell pwd)
EXTRA_CFLAGS += -g
all:
make -C $(KDIR) M=$(PWD) modules
clean:
make -C $(KDIR) M=$(PWD) clean
请建议我可能是什么问题。
我的'insmod'成功了,我看到我的'module_init' kprints int他'dmesg'。但我的'modprobe'失败。因此'modinfo'也会失败。你能否提供一些见解? – 2012-10-05 01:25:39
可能有几个原因。最重要的是modprobe不知道你的模块,因为它咨询了一个数据库,所以你不能'modprobe my_module_file.ko'。相反,您需要在使用'depmod -a'将其插入数据库后执行'modprobe my_module_name'。但为了这个目的,这并不重要。你知道你的名字和文件名,所以你可以简单地使用它们,而不是回答的建议。例如'MODULE_NAME = my_module_name; MODULE_FILE = my_module_file.ko' – Nir 2012-10-09 17:30:25
一个快速提示:你需要root获得 cat/sys/module/module-name-here/sections /。* 东西工作..(否则它只显示值0x0)。 – kaiwan 2015-04-03 02:42:57