Skip to content

Releases: chenzhiy2001/code-debug

v2.0.0 Milestone

20 Apr 07:42
Compare
Choose a tag to compare

What's Changed

  • 支持一个断点对应多个断点组
  • 边界断点现在包含在断点组里面,而不是排除在断点组外,从而排除了由于当前在用户态,内核态符号表已经被卸载,造成无法设置位于内核的边界断点的情况
  • 现在没有入口断点,只有出口断点。原来的内核入口断点改为用户态程序的出口断点(这个出口断点在rCore-Tutorial-v3用户库代码里面,属于一个断点对应多个断点组的情况)
  • 之前在内核出口边界设用户态程序开头位置的断点,然后直接 continue 就可以跳转到这个断点。这是因为
    rCore-Tutorial-v3 用了跳板页(详见https://scpointer.github.io/rcore2oscomp/docs/lab2/gdb.html
    。在没有跳板页,且是双页表的 OS 的情况下,这个策略不会起作用。这个更新中使用了更稳妥的策略:通过不
    断的自动的单步(step instruction)每单步一次就查看内存地址来确定是否到达新的特权级。
  • 将断点组切换的逻辑整理为一个状态机,提高代码的抽象程度,使得对断点组切换机制的学习、维护和升级变得
    容易
  • 添加钩子断点(就是某个断点触发后可以执行一段用户自定义的 GDB 行为),从而可以在内核获取下一个进程
    的进程名
  • 用户可以在 launch.json 里提交自定义代码,自定义 1)文件名转断点组,2)断点组名转符号表所在的位置 3)
    钩子断点的位置钩子断点触发之后的信息收集行为
  • 添加足够多的代码抽象(断点,钩子断点,状态机),方便同学维护以及添加新功能。
  • 边界断点现在除了通过配置文件添加,也可以通过右键菜单添加(甚至可以取消)
  • 删除冗余代码,类似"地址空间"的变量名全部改成“断点组”。难以辨识的无意义变量名(比如 num)改成有意义
  • 解决了由调试器自动设置的断点不会在 VSCode 里面显示出来的问题
  • 添加了 showInformationMessage 函数,代替 mibase.ts 中无法使用的 console.log
  • launch.json 支持${workspacefolder}插值(之前有一些参数是不能用这个插值的),大大提升了配置文件的便
    携性
  • 修改插件本身的编译配置文件 tsconfig.json 和 .vscodeignore,使得编译本插件的时候忽略文档文件夹和根
    文件夹下 60m 的“演示视频.mp4” 以及 3m 的“最终报告.pdf”,从而极大减小编译出的插件二进制包的大小
  • 修改 __metadata 属性
  • 通过 Github Action 自动上传到 VS Code Extension Marketplace 和 Open VSX Registry
  • 编写插件商店的主页 README-ExtensionMarkets.md。这个主页不会直接用相对路径链接到docs/文件夹和根
    目录下的视频、文档,所以可以放心地在编译时去掉它们。插件商店的主页会链接到 Github 仓库主页

Full Changelog: https://github.com/chenzhiy2001/code-debug/blob/master/docs/2024-04-19.md

First OS-Debug Release

22 Jan 08:20
66d67bf
Compare
Choose a tag to compare

First Release in vsix format thanks to @yfblock