You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Simics 2021.24版本step-out与step-over-instruction功能是否存在故障?

Simics 2021.24 调试命令异常处理方案

故障表现

  1. step-out命令执行无效果,执行后指令指针(RIP)未跳转到当前函数的返回地址位置,仍停留在原函数内部
  2. step-over-instruction命令无法跨过call调用,执行后直接进入call指令指向的目标函数内部,未停留在call的下一条指令位置

根因说明

Simics 2021.24版本存在x86架构下调试器指令识别与栈帧解析的已知缺陷,该缺陷会导致调试器无法正确识别call、ret指令的关联栈上下文,进而导致依赖上下文判断的步进类命令失效,即使提前执行enable-debugger开启调试器也无法规避该问题。

解决方案

官方修复方案

直接升级至Simics 2022.16及以上版本,该版本官方已完整修复上述调试命令缺陷,可正常使用step-out、step-over-instruction功能。

临时兼容方案

若无法升级版本,可通过手动操作替代失效命令:

  • 替代step-over-instruction:
    1. 停在call指令位置时,执行disassemble %rip 1确认当前call指令的长度,x86下间接call指令通常为2字节
    2. 对call指令的下一条地址设置临时断点后执行运行命令,示例:bp -t (%rip + 2); c
  • 替代step-out:
    读取当前栈顶存储的返回地址,设置临时断点后运行,示例:bp -t *(%rsp); c

验证规则

操作完成后可通过如下方式验证效果:

  • 执行step-over-instruction替代方案后,检查RIP值是否等于call指令的下一条地址
  • 执行step-out替代方案后,检查RIP值是否等于当前栈顶存储的返回地址值

内容的提问来源于stack exchange,提问作者Rohan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:27:05