Quiero depurar mi módulo kernel. Para que yo estoy tratando de poner un punto de interrupción en do_one_initcall
en kernel
/module.c
justo antes de mi init_module
obtiene la llamada pero está mostrandodebugging de módulo a través de KGDB
No se puede acceder a la memoria en la dirección 0x802010a0
A continuación se muestra la Makefile
que estoy usando:
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
Por favor sugiérame cuál podría ser el problema.
my 'insmod' tiene éxito y veo mi' module_init' kprints int he 'dmesg'. pero mi 'modprobe' falla. y así 'modinfo' falla también. podrías darnos alguna idea? –
Puede haber varias razones. La más trivial es que modprobe no conoce su módulo, ya que consulta una base de datos, por lo que no puede hacer 'modprobe my_module_file.ko'. En su lugar, debe hacer 'modprobe my_module_name' después de insertarlo en la base de datos con' depmod -a'. Sin embargo, por el bien de este propósito, en realidad no importa. Usted sabe su nombre y nombre de archivo, por lo que simplemente puede usarlos en lugar de lo que sugiere la respuesta. p.ej. 'MODULE_NAME = my_module_name; MODULE_FILE = my_module_file.ko' – Nir
Un consejo rápido: se requiere root para obtener el cat/sys/module/module-name-here/sections /.* cosas para trabajar ... (de lo contrario, solo muestra el valor 0x0). – kaiwan