debugging - significado - que es un debug y para que sirve
¿Cómo se depuran los sistemas operativos? (3)
¿Cómo se depuran normalmente los sistemas operativos? No se pueden pasar por un depurador como simples programas de consola, y los tiempos de compilación son demasiado grandes para realizar cambios pequeños repetidamente y volver a compilar todo.
¡No están depurados como programas de varios gigabytes! :)
Si se refiere a los componentes individuales del modo de usuario, principalmente se pueden depurar al igual que los programas y bibliotecas normales (¡ya que son programas / bibliotecas normales!).
Para los componentes en modo kernel, sin embargo, cada sistema operativo tiene su propio mecanismo; Aquí hay alguna información sobre la forma en que hacemos la depuración del kernel en Windows. Se puede hacer usando la ayuda de otra máquina conectada a la máquina que está depurando, a través de un puerto en serie o algo así. No estoy familiarizado con el proceso en sí, pero esa es la esencia de cómo funcionan. (Debe configurar algunas opciones de cargador de arranque para que el sistema esté listo para que el depurador se conecte lo antes posible).
Depende de qué parte del sistema operativo estés hablando. Cuando trabajé en MSFT, trabajé en el equipo de IE. Depuramos IE y el intérprete de comandos (Windows Explorer) en Visual Studio y pasamos por ellos línea por línea durante todo el día. Aunque, a veces, es más fácil depurar usando una herramienta de línea de comandos como NTSD.
Sin embargo, si desea depurar algo en Kernel land, como el kernel del sistema operativo o los controladores del dispositivo, que sospecho que es realmente lo que está preguntando, debe usar el depurador Kernel. Para Windows, que es una herramienta de línea de comandos llamada kd, y generalmente se ejecuta el depurador en una máquina y se depura de forma remota el objetivo.
Hay un conjunto completo de técnicas a lo largo de la historia, desde luces intermitentes en la consola, hasta el uso de dispositivos de hardware como ICE, hasta técnicas más modernas que utilizan depuradores bastante estándar. Una técnica que es más común entre los desarrolladores del sistema operativo que los desarrolladores de aplicaciones es el análisis de un volcado del núcleo. Mire algo como mdb en Solaris para obtener ideas sobre cómo los desarrolladores del kernel de Solaris realizan algunas de sus depuraciones. También se usan tecnologías de seguimiento. En cualquier lugar, desde paquetes de registro bastante sencillos hasta técnicas más modernas como dtrace.
También tenga en cuenta que las técnicas utilizadas dependen de la capa de software. El arranque inicial tiende a ser un lugar bastante difícil para meter los dedos. Pero después de eso, el entorno de los sistemas operativos modernos se parece cada vez más a la configuración de la aplicación a la que está acostumbrado. Al final, todo es código :)