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成功加载到r13mov 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
相关产品推荐
相关产品推荐

