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
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.
开发日志
工作清单:
现在调试器可以启动,但是断点设置逻辑还有一些问题,正在调试。
详细:
Reset 按钮未清除 Whitelist 面板:按下 Reset 后,导致面板内容残留。在 reset handler 中补全清除逻辑。
调用树在 trace root 未触发前就生成:
ardb-get-snapshot在 shadow stack 为空时仍会扫描物理栈帧,产生虚假的异步调用树节点。将 code-debug的 GDB/MI 通信层移植到 rust-debugger-DA,替换原来手写的简易 MI 解析器。
文件:
src/backend/mi_parse.ts— MI 输出解析器src/backend/backend.ts— 类型定义src/backend/gdb_expansion.ts— GDB 变量值展开/格式化src/backend/mi2.ts— GDB 进程管理 + MI 解析 + EventEmitter,MI2类重构:
gdbDebugSession.ts改为使用MI2类,所有调试控制(continue/next/step/断点)都通过 MI2 方法调用移植自 code-debug 的断点组切换状态机:4 个状态:
kernel、kernel_single_step_to_user、user、user_single_step_to_kernel从 code-debug 的
mibase.ts中提取BreakpointGroups类:(1)解耦与
MI2DebugSession的双向依赖,改用IBreakpointGroupsSession/IDebuggerBackend接口注入地址空间判断 + 寄存器读取
单元测试
新增
src/test/testOSStateMachine.ts,37 个测试,覆盖:a. 每个状态的所有已定义/未定义转换
b. actions 内容及顺序
c. 完整 kernel→user→kernel 生命周期循环
d.
stateTransition不修改原始 state 对象会议内容:
问题:断点都是未验证,F5 没有在断点处停下来
未验证是因为 GDB 还没有加载对应的符号文件。核心原因是断点设置的时机:你在调试会话启动前(或刚启动时)在编辑器里打的断点,此时 GDB 拿到的是源文件路径,但内核符号文件里没有用户程序符号,GDB 把这些断点标记为 pending。
All reactions