内核源代码调试器项目目标#

在这里维护整个内核源代码调试器项目的目标描述。


内核源代码调试器项目的起因是,操作系统课上同学们的内核代码的调试手段主要还是在代码中加printk()输出信息,很难像应用程序开发那样有一个集成的开发环境,可以方便地进行源代码级的动态跟踪和调试。于是一群对工具感兴趣的人一起开始了这个开源社区项目,希望能通过开源社区的持续努力,达成如下的目标。

代码执行环境#

在各种可能的代码执行环境中,及时和准确地获取当前执行代码信息。可能的执行环境如下。

  • 不同特权级:用户模式、内核模式、虚拟机监控模式、机器模式
  • 不同虚拟化环境:QEMU模拟器、虚拟机、物理CPU
  • 不同源代码开发语言:C语言、Rust语言

信息获取#

在各种代码执行环境中,及时和准确地获取各种数据结构的当前信息和历史变化情况。

  • 当前执行代码与源代码的对应关系信息(符号信息)
  • 函数调用栈
  • 进程、线程和协程的控制块
  • 系统调用、中断、异常等事件
  • 调度器中各种队列数据结构
  • 内存分配和释放情况

信息展现#

在vscode和浏览器中,获取信息的当前状态和历史变化的及时和准确可视化展现。

  • 代码信息展现:源代码行号、函数名等
  • 数据结构和相互关系展现:函数调用关系图、火焰图等