¿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.¿Cómo se depuran los sistemas operativos?
Respuesta
¡No están depurados como programas de varios gigabytes! :)
Si se refiere a los componentes individuales en modo de usuario, principalmente se pueden depurar al igual que los programas normales y las bibliotecas (porque son programas/bibliotecas normales).
Sin embargo, para los componentes en modo kernel, cada sistema operativo tiene su propio mecanismo; here es alguna información sobre la forma en que hacemos la depuración del kernel en Windows. Se puede hacer utilizando 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 del gestor 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é 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 un command line tool como NTSD.
Sin embargo, si desea depurar cualquier cosa en la tierra del núcleo como los controladores del núcleo del sistema operativo o dispositivo, y sospecho que es realmente lo que estás pidiendo, entonces debe utilizar el depurador del núcleo. 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 :)
- 1. Comparación de sistemas operativos integrados?
- 2. ¿Cómo funcionan los sistemas operativos en tiempo real?
- 3. Cómo detectar adecuadamente los sistemas operativos Windows, Linux y Mac
- 4. ¿Cómo se depuran los Applets de Java?
- 5. Segmentación de memoria en sistemas operativos modernos
- 6. Diferencia entre latencia y fluctuación en los sistemas operativos
- 7. Detección de sistemas operativos en Ruby
- 8. ¿Cómo se depuran los procedimientos almacenados de MySQL?
- 9. ¿Cuál es la diferencia entre los modos de usuario y kernel en los sistemas operativos?
- 10. El nombre del grupo Todos en sistemas operativos no ingleses
- 11. ¿Qué sistemas operativos no liberarán memoria al salir del programa?
- 12. ¿Cómo se depuran las funciones con postgres?
- 13. Prueba del navegador: ¿vale la pena probar varios sistemas operativos?
- 14. ¿Hay alguna diferencia en la representación de los principales navegadores en los sistemas operativos?
- 15. ¿Existe una forma estándar, a través de los sistemas operativos, de agregar "etiquetas" a los archivos
- 16. R archivos de ayuda en diferentes sistemas operativos
- 17. ¿Cómo se compilan las extensiones Python C/C++ para diferentes sistemas operativos/versiones de Python?
- 18. ¿Es String.hashCode() portátil entre máquinas virtuales, JDK y sistemas operativos?
- 19. Sistemas operativos en tiempo real para sistemas embebidos -> Buenos libros iniciales
- 20. ¿Cuál es la nueva línea universal para todos los sistemas operativos? (LF y CR)
- 21. Dónde está el archivo de configuración de Subversion del usuario almacenada en los principales sistemas operativos?
- 22. ¿Qué fuente en Swing tiene el mismo aspecto en todos los sistemas operativos?
- 23. En los sistemas operativos o navegadores son nombres font-familia CSS mayúsculas y minúsculas
- 24. PHP: una buena forma de universalizar las rutas en todos los sistemas operativos (direcciones inclinadas)
- 25. Diferencias (si existen) entre el bloqueo directo y la inanición en los sistemas operativos
- 26. Utilice un instalador de NSIS para instalar binarios de 32 bits en sistemas operativos de 32 bits y binarios de 64 bits en sistemas operativos de 64 bits.
- 27. ¿Cómo depuran las personas en ECB Emacs?
- 28. ¿Cómo se definen los sistemas LTI con retraso en Scipy?
- 29. Flujo de trabajo de Git adecuado para sistemas operativos combinados y códigos privados?
- 30. Importar archivos dll externos basados en sistemas operativos de 64 bits o 32 bits