【发布时间】:2017-11-25 13:16:26
【问题描述】:
我在调试我的程序时遇到了一个错误,即使阅读了asm代码也无法解决
这是来自 GDB 的图像,在 0x4070a1 之前,%rdx 是 0x61b130,这个数字应该移动到 -0x18(%rbp)。但是,经过这条指令后,我发现-0x18(%rbp)变成了0x61b7d0,这让我感到很困惑。
由于这个问题,我的程序无法正常运行,谁能告诉我原因?谢谢!
C 代码:
E_enventry t = E_FunEntry(level,label,NULL,NULL); //t here is 0x61b130
S_enter(venv,S_Symbol("flush"), t);
......
void S_enter(S_table t, S_symbol sym, void *value) {
//while value here is 0x61b7d0
TAB_enter(t,sym,value);
}
【问题讨论】:
-
你展示你的 C 代码如何让我们看看它有什么问题?
-
欢迎来到 stackoverflow.com。请花一些时间阅读the help pages,尤其是名为"What topics can I ask about here?" 和"What types of questions should I avoid asking?" 的部分。也请take the tour 和read about how to ask good questions。最后请学习如何创建Minimal, Complete, and Verifiable Example。
-
@dbush 谢谢,我已经在问题中添加了它,但是我认为C代码没有意义,太奇怪了。
-
@T.Chen 您提供的代码似乎不足以让我们重现问题。您能否创建一个实际重现问题的最小示例
-
@Pac0 很抱歉,我会尽量发一个