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

x86-64汇编栈数据读写异常:LLDB调试值不符问题问询

LLDB调试栈读写不一致问题

我正在编写编译器,为Linux(x86-64)生成了以下Intel语法汇编代码:

lea r13, _s1
mov qword ptr [rbp + -2*8], r13
mov r10, qword ptr [rbp + -2*8]
lea r13, qword ptr [r10 + 8]

这段代码的逻辑是:将标签_s1的地址加载到r13,存入栈中,再从栈读取到r10,加8后存入r13。非调试状态下运行完全符合预期,没有崩溃。

但用VSCode搭配CodeLLDB调试时,出现了异常行为:

  • lea r13, [0x425290]:0x425290成功加载到r13
  • mov qword ptr [rbp - 0x10], r13:0x425290被写入地址0x7fffffffe1f0;我通过LLDB执行memory read -s1 $rbp-0x10确认了这一点
  • mov r10, qword ptr [rbp - 0x10]:读出的值却是0xffffe6f400000000并存入r10,这是为什么?
  • lea r13, [r10 + 0x8]:最终0xffffe6f400000008被加载到r13

为何从栈中读出的值与写入的不一致?

补充:使用VSCode内置GDB调试时无此异常,是我误用了LLDB吗?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 09:20:04