Cómo compilar información de depuración para módulos de kernel de Linux cargables (como el del kernel en vmlinux- uname -r
.debug?) ¿Se genera mientras construimos un módulo? Si es así, dónde estará ¿situado?Debug-info para módulos de kernel cargables
Respuesta
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
#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
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 –
- 1. ¿Cómo distribuir módulos kernel usando un RPM?
- 2. Cómo recargar los módulos kernel modificados
- 3. Módulos de kernel de Linux - ¿riesgo de seguridad?
- 4. Módulos de kernel no GPL que usan GPL
- 5. C#, Ninject: ¿Dónde colocas el kernel y tus módulos?
- 6. Inserte y elimine mediante programación módulos kernel en C
- 7. Configuración de la licencia para módulos en el kernel de Linux
- 8. ¿Por qué es necesario Depmod para construir y trabajar con módulos kernel?
- 9. Implementación de la sincronización correcta entre módulos en el kernel de Linux
- 10. ¿Cómo obtengo la dirección de los módulos kernel nt y win32k?
- 11. Módulos de PayPal para Node.js
- 12. Tratando de encontrar todos los módulos del kernel necesarios para mi máquina usando la secuencia de comandos de shell
- 13. ¿Cómo se pueden cargar los módulos del kernel de Linux desde el código C?
- 14. "DebugInfo para CritSec no apunta a la sección crítica" al analizar el interbloqueo
- 15. Makefile para el módulo kernel de Linux?
- 16. ejemplo de proc_create() para el módulo kernel
- 17. módulos Zend en módulos
- 18. Haddock para módulos instalados Cabal?
- 19. Módulos Node.js para Amazon SES
- 20. Escribiendo módulos C++ para node.js
- 21. Definir firmas recursivas para módulos
- 22. JAXB - Creación de módulos para reutilización
- 23. Exporte correctamente los Encabezados de Linux, Módulos
- 24. Cómo codificar un módulo kernel de Linux?
- 25. Entorno virtual para Linux Kernel Hacking
- 26. Edificio módulo del kernel para Android
- 27. Programación del kernel para 1024 CPUs
- 28. Carga retardada de módulos en python
- 29. addr2line en el módulo kernel
- 30. ¿Cuál es la forma más sencilla de escribir bibliotecas portátiles cargables dinámicamente en C++?
¿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? –
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