Debugging 调试操作系统
我正在浏览一些关于操作系统的一般资料,突然想到了一个问题。开发人员在开发操作系统(即调试操作系统本身)时将如何调试?操作系统开发人员可以使用哪些工具进行调试 你可以使用虚拟机:例如。 或 或者使用类似KDB的串行线路。在引导方案(从头开始的操作系统)中,您可能需要在操作系统内核中引入远程调试功能(内存转储、日志记录等),并使用单独的机器。或者您可以使用虚拟机/虚拟机监控程序 WindowsCE有一个称为KITL的组件-独立于内核的传输层。我想标题说明了它自己。printf日志 附加到进程 严肃的单元测试 等等调试内核是很困难的,因为您可能无法依靠崩溃的机器来传达正在发生的事情。此外,错误的代码可能在一些可怕的地方,比如中断处理程序 据我所知,调试操作系统的主要方法有四种:Debugging 调试操作系统,debugging,operating-system,kernel,Debugging,Operating System,Kernel,我正在浏览一些关于操作系统的一般资料,突然想到了一个问题。开发人员在开发操作系统(即调试操作系统本身)时将如何调试?操作系统开发人员可以使用哪些工具进行调试 你可以使用虚拟机:例如。 或 或者使用类似KDB的串行线路。在引导方案(从头开始的操作系统)中,您可能需要在操作系统内核中引入远程调试功能(内存转储、日志记录等),并使用单独的机器。或者您可以使用虚拟机/虚拟机监控程序 WindowsCE有一个称为KITL的组件-独立于内核的传输层。我想标题说明了它自己。printf日志 附加到进程 严肃的
使用内核调试器进行远程调试,这也可以通过虚拟化完成。调试操作系统不适合胆小的人。由于内核正在调试中,您的选择将非常有限。大量的
printf
语句是一个技巧,而且,这取决于我们可能谈论的真正调试的“操作系统”
- 文件系统
- 司机
- 内存管理
- 原始磁盘输入/输出
- 屏幕输入/输出
- 内核
printf
语句将错误、日志等显示到一个单独的终端或一个文件,这是最好的调试方式,听起来确实是一场噩梦,但值得为此付出努力
希望这有帮助,
顺致敬意,
汤姆。+1,问得好!我不知道答案,但我所知道的是,当然你不能使用“正常”的调试器,因为内核运行在它上面…通过认真思考!操作系统开发者似乎有点反内核调试器——著名的是Linus Torvalds。Linus Torvalds说,只有傻瓜才需要内核调试器:P套用Bjarne Stroustroup的话,“新手总是比专家多。”调试器有时很有用。从经验中了解到调试器对您没有帮助:也很有用。Linus还说Emacs是“邪恶的”(尽管编写了大量linux)