2012-09-25 24 views

Respuesta

5

Suponiendo que ha creado el kernel con CONFIG_DEBUG_INFO, los símbolos de depuración ya deberían estar en el archivo .ko para el módulo en cuestión. Sin embargo, como el módulo puede cargarse dinámicamente en cualquier dirección, debe darle a gdb un poco más de información.

cd /sys/module/${MODNAME}/sections 
cat .text .data .bss 

continuación, puede utilizar esta información al contar BGF sobre los módulos:

(gdb) add-symbol-file ${MODPATH} ${TEXT} -s .data ${DATA} -s .bss ${BSS} 

No es un tutorial que le guía a través de este en el sitio web de la Fundación Linux. Kernel and Module Debugging with GDB

+0

¿Puedo establecer puntos de interrupción y puntos de observación? en ese tutorial, han mencionado que no podemos hacer más avanzados, como establecer puntos de interrupción, etc. y todo esto se puede hacer en un solo sistema ¿verdad? o si no necesito PC? –

+0

No podrá establecer puntos de interrupción en su kernel de host mientras esté en el host. Puede depurar un kernel en una VM o configurar la depuración serial en otra máquina para que pueda detener/iniciar el kernel mientras depura. – stsquad

4
#Modify your Makefile like this then build it 
#cat /sys/module/mydriver/sections/.text -> find the address 
#Then run like add-symbol-file drivers/mydrivers/mydriver.o address from above #line 
obj-m += module_name.o 
MY_CFLAGS += -g -DDEBUG 
ccflags-y += ${MY_CFLAGS} 
CC += ${MY_CFLAGS} 


all: 
     make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules 

debug: 
     make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules 
     EXTRA_CFLAGS="$(MY_CFLAGS)" 
clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean 
+0

Según este enlace, no necesitamos agregar los indicadores -g en el archivo de creación de mi módulo ¿correcto ...? https://www.linux.com/learn/kernel-newbie-corner-kernel-and-module-debugging-gdb –

Cuestiones relacionadas