You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
问题就是当 OS 状态机切换 breakpoint group 时,会调用 break-delete 把所有当前断点删掉。Python 端通过 gdb.Breakpoint API 安装的 PollEntryBP/CallSiteBP 也会被一并删除,这意味着 PollEntryBP 在 kernel 里刚装上,一切换到 user 空间,就全没了。回来的时候也不会自动恢复。
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
工作内容
复现 rel4
相关问题:
因为我们主要想用到异步OS的例子用来测试调试器,针对[rel4](https://github.com/rel4team/rel4_kernel/),有很多分支,我复现的是 fpga_test 分支,够用。
./build.py时 gitee 依赖拉不下来,换成 GitHub 源就好了同样,在
./build.py时,默认的 riscv64-linux-gnu 工具链只有硬浮点 libgcc,跟项目的软浮点 rv64imac 不兼容,链接会报错,换成 riscv64-unknown-elf 工具链就解决了。其他就是网络问题和缺一些系统工具依赖,边报错边装就行。
由于之前往async- debug中移植OS调试功能时,遗漏了异步树构建原始数据的获取路径,导致异步树构建失败,实现一下,就没问题了,接下来需要初步设计如何实现异步OS调试。
异步 OS 调试的核心矛盾:目前两个功能是互斥的
问题就是当 OS 状态机切换 breakpoint group 时,会调用 break-delete 把所有当前断点删掉。Python 端通过 gdb.Breakpoint API 安装的 PollEntryBP/CallSiteBP 也会被一并删除,这意味着 PollEntryBP 在 kernel 里刚装上,一切换到 user 空间,就全没了。回来的时候也不会自动恢复。
最开始需要解决的核心问题:
初步思路
我倾向于分两阶段实现:
先构建两棵独立的树
Kernel 和用户态各维护自己的影子栈和异步树。切换时不混在一起。实现起来简单。
然后再跨特权级关联
在 syscall 边界处插入关联节点,把两棵树连起来。这个需要从 Border/Hook 机制获取 "当前正在穿越 syscall" 的上下文,在影子栈里插入一个 type: "boundary" 的节点。
会议内容
All reactions