Cómo depurar el kernel del sistema operativo y el cargador de arranque
kdb: solo se puede depurar a nivel de código ensamblador;
La ventaja es que no se requieren dos máquinas para la depuración.
gdb: Faltan algunas funciones clave al depurar módulos; se puede usar para ver el kernel en acción, incluido el desmontaje de funciones del kernel.
kgdb: Depurar el kernel a nivel de código fuente es muy fácil. La desventaja es que kgdb solo se puede usar para depuración remota y requiere un cable serie y dos máquinas para depurar el kernel (también puede usar el software vmware para ejecutar dos sistemas operativos en el mismo host para depurar el kernel)
printk () es la técnica más común para depurar el código del kernel. Al agregar llamadas de depuración printk() en ubicaciones específicas del código del kernel, puede imprimir la información de interés directamente en la pantalla, lo que le permite observar la ruta de ejecución del programa, así como variables, punteros y otra información de interés. El depurador del kernel de Linux (kdb) es un parche para el kernel de Linux que proporciona una forma de examinar la memoria del kernel y las estructuras de datos mientras el sistema se está ejecutando. Oops y kdb se presentan en detalle en el artículo "Dominar la tecnología de depuración de Linux", puede consultarlo. Kprobes proporciona una interfaz para forzar la entrada a cualquier rutina del kernel para recopilar información de los manejadores de interrupciones sin interferencias. Con Kprobes, puede recopilar fácilmente información de depuración, como registros del procesador y estructuras de datos globales, sin tener que compilar e iniciar el kernel de Linux con frecuencia. Para obtener detalles sobre cómo usarlo, consulte Depuración del kernel mediante Kprobes.
Sistema de archivos/proc
En el sistema de archivos /proc, leer y escribir archivos virtuales es una forma de comunicarse con el kernel. Para ver la información en el búfer de bucle invertido del kernel, puede usar la herramienta dmesg (o el comando cat /proc/kmsg a través del propio /proc). El Listado 6 enumera los últimos mensajes mostrados por dmesg.
Listado 6. Ver la salida del kernel desde LKM
[root@plato]# dmesg tail -5
cs: IO port probe 0xa00-0xaff: clean | .
eth0: El enlace está inactivo
eth0.El enlace está activo, ejecutándose a 100 Mbit semidúplex
El módulo my_module_init ahora está cargado.
p>my_module_cleanup llamado. el módulo ahora está descargado.
Puede ver la información de este módulo en la salida del kernel.
Herramientas de depuración
Utilice un depurador para recorrer su código y ver los valores de las variables y los registros de la computadora. Usar un depurador interactivo en el kernel es un tema complejo. El kernel se ejecuta en su propio espacio de direcciones. Muchas características comunes proporcionadas por los depuradores del espacio de usuario son difíciles de usar en el kernel, como los puntos de interrupción y la depuración en un solo paso.