我正在调试 goldfish android 内核(版本 3.4),带有内核源代码。
现在我发现 gdb 有时会在行之间来回跳转,例如考虑如下 c 源代码:
char *XXX;
int a;
...
if (...)
{
}
当我到达if
子句,我输入n
它会跳回到int a
部分。这是为什么?
如果我再次执行该命令,它将进入括号中if
.
如果可以的话,我想避免那部分,直接输入if(当然,if条件匹配)
当我到达 if 子句时,我输入 n,它将跳回 int a 部分。这是为什么?
因为您的代码是在优化的情况下编译的,并且编译器可以(并且经常)重新排列程序的指令,使得“属于”不同源代码行的指令交错(代码运动优化尝试(除其他外)将加载指令移到需要其结果之前很久;这有助于隐藏内存延迟)。
如果您正在使用gcc-4.8
或稍后,使用以下内容构建您的资源-Og
。否则,请参阅this answer.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)