Skip to content

Commit f55f0f5

Browse files
authored
更新项目目标和规划
1 parent 48e125a commit f55f0f5

3 files changed

Lines changed: 67 additions & 0 deletions

File tree

content/_index.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ bookToc: false
2020

2121

2222
## 快速链接
23+
- 内核源代码调试器项目的目标和规划
24+
- [项目目标](docs/objective.md) — 整个内核源代码调试器项目的目标描述
25+
- [项目规划](docs/design.md) — 整个内核源代码调试器项目的目标分解和子项目设置
2326
- OSGDB项目文档:
2427
- [项目介绍](docs/) — 项目概述与背景
2528
- [安装与使用](docs/usage) — 插件安装、调试配置与开发环境搭建

content/docs/design.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
title: 项目规划
3+
weight: 3
4+
bookToc: true
5+
---
6+
7+
# 内核源代码调试器项目规划
8+
9+
在这里维护整个内核源代码调试器项目的目标分解和子项目设置信息。
10+
11+
---
12+
13+
这里的项目规划思路和规划依据是,开发人员的兴趣、周边的依赖条件成熟度、思路可行性和可能的应用需求评估等。
14+
15+
## 内核调试器框架
16+
17+
- 基于QEMU GDB的vscode调试插件:项目设想是,在QEMU环境下动态跟踪用户态和内核态代码执行,在特权级切换后更新符号表和断点设置信息。
18+
- 基于eBPF的内核调试器:项目设想是,在物理机器上利用eBPF机制跟踪用户模式、内核模式和虚拟机监控模式的代码执行状态和数据结构信息。
19+
- 远程调试器:项目设想是,实现一个远程控制和信息获取回路,支持对各种开发的远程操控,从而实现系统软件和IP核的开发。
20+
- 开发板类型:FPGA开发板、x86开发板、ARM开发板和RISC-V开发板等
21+
- 调试对象类型:应用程序、操作系统内核、虚拟机监控器、CPU软核
22+
23+
## 信息获取方法
24+
25+
- 不同内核的vscode调试插件适配:项目设想是,针对各种教学操作系统,提供内核调试支持。
26+
- rCore、StarryOS
27+
- xv6、uCore
28+
- Rust语言异步运行时下的函数栈分析:项目设想是,获取Rust语言异步函数执行过程中的函数调用信息,并分析函数调用逻辑

content/docs/objective.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
title: 项目目标
3+
weight: 3
4+
bookToc: true
5+
---
6+
7+
# 内核源代码调试器项目目标
8+
9+
在这里维护整个内核源代码调试器项目的目标描述。
10+
11+
---
12+
13+
内核源代码调试器项目的起因是,操作系统课上同学们的内核代码的调试手段主要还是在代码中加printk()输出信息,很难像应用程序开发那样有一个集成的开发环境,可以方便地进行源代码级的动态跟踪和调试。于是一群对工具感兴趣的人一起开始了这个开源社区项目,希望能通过开源社区的持续努力,达成如下的目标。
14+
15+
## 代码执行环境
16+
17+
在各种可能的代码执行环境中,及时和准确地获取当前执行代码信息。可能的执行环境如下。
18+
- 不同特权级:用户模式、内核模式、虚拟机监控模式、机器模式
19+
- 不同虚拟化环境:QEMU模拟器、虚拟机、物理CPU
20+
- 不同源代码开发语言:C语言、Rust语言
21+
22+
## 信息获取
23+
24+
在各种代码执行环境中,及时和准确地获取各种数据结构的当前信息和历史变化情况。
25+
- 当前执行代码与源代码的对应关系信息(符号信息)
26+
- 函数调用栈
27+
- 进程、线程和协程的控制块
28+
- 系统调用、中断、异常等事件
29+
- 调度器中各种队列数据结构
30+
- 内存分配和释放情况
31+
32+
## 信息展现
33+
34+
在vscode和浏览器中,获取信息的当前状态和历史变化的及时和准确可视化展现。
35+
- 代码信息展现:源代码行号、函数名等
36+
- 数据结构和相互关系展现:函数调用关系图、火焰图等

0 commit comments

Comments
 (0)