操作系统通常如何进行调试?它们不能像简单的控制台程序那样通过调试器进行逐步调试,而构建时间太长,无法反复进行小改动并重新编译整个系统。
操作系统通常如何进行调试?它们不能像简单的控制台程序那样通过调试器进行逐步调试,而构建时间太长,无法反复进行小改动并重新编译整个系统。
它们不像多吉字节的程序那样进行调试! :)
如果你指的是单个用户模式组件,它们主要可以像普通程序和库一样进行调试,因为它们就是普通的程序/库!
对于内核模式组件,每个操作系统都有自己的机制;这里提供了一些关于Windows内核调试的信息。它可以通过与调试机器连接的另一台机器(通过串口或其他方式)来完成。我不熟悉这个过程本身,但这就是它们工作的要点。(您需要设置一些引导加载程序选项,以便系统尽早准备好连接调试器。)
在整个历史上,有一整套技术,从控制台上闪烁的灯光,到使用硬件设备如ICE,再到更现代的技术,利用相当标准的调试器。其中一种技术,在操作系统开发人员中比应用程序开发人员更常见,就是核心转储的分析。可以看看Solaris上的mdb,了解Solaris内核开发人员如何进行一些调试。还有跟踪技术。从相当简单的日志记录包到更现代的技术如dtrace。
还要注意,所使用的技术取决于软件层。初始引导往往是一个相当难以进入的地方。但在此之后,现代操作系统的环境越来越像您所使用的应用程序设置。最终,这都是代码 :)