如何调试操作系统?

Max*_*xpm 8 debugging operating-system

操作系统通常如何调试?它们无法通过调试器(如简单的控制台程序)逐步完成,并且构建时间太大,无法重复进行小的更改并重新编译整个事物.

Meh*_*dad 6

它们不是作为一个多GB的程序调试的!:)

如果您指的是各个用户模式组件,它们可以像普通程序和库一样进行调试(因为它们普通的程序/库!).

但是,对于内核模式组件,每个操作系统都有自己的机制; 这里有一些关于我们在Windows中进行内核调试的信息.它可以通过连接到您正在调试的机器的另一台机器的帮助,通过串口或其他东西来完成.我对这个过程本身并不熟悉,但这是他们工作方式的要点.(您需要设置一些引导加载程序选项,以便系统准备好尽早连接调试器.)


i_a*_*orf 5

这取决于您所谈论的操作系统的哪个部分.当我在MSFT工作时,我在IE团队工作.我们在Visual Studio中调试了IE和shell(Windows资源管理器),并且整天逐行完成它们.虽然有时使用命令行工具(如NTSD)进行调试更容易.

但是,如果你想在内核领域调试任何东西,比如操作系统内核或设备驱动程序,我怀疑这正是你所要求的,那么你必须使用内核调试器.对于Windows,它是一个名为kd的命令行工具,通常在一台机器上运行调试器并远程调试目标.