gpt4 book ai didi

android - 为什么用c源代码调试时GDB是 "jumping back"

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:29:03 32 4
gpt4 key购买 nike

我正在使用内核源代码调试 goldfish android 内核(版本 3.4)。

现在我发现 gdb 有时会在行之间来回跳转,例如考虑如下所示的 c 源代码:

char *XXX;
int a;
...

if (...)
{

}

当我到达 if 子句时,我输入 n 它将跳回到 int a 部分。这是为什么?

如果我再次执行该命令,它会在 if 中输入括号。

如果可能,我想避开那部分,直接输入if(当然是if条件匹配)

最佳答案

When I reached the if clause, I type in n and it will jump back to the int a part. Why is that?

因为您的代码是在优化的情况下编译的,并且编译器可以(并且经常)以这样一种方式重新安排您程序的指令,即“属于”不同源代码行的指令交错(代码运动优化尝试(在其他事情)将加载指令移动到需要其结果之前很久;这有助于隐藏内存延迟)。

如果您使用的是 gcc-4.8 或更高版本,请使用 -Og 构建您的源代码。否则,请参阅 this回答。

关于android - 为什么用c源代码调试时GDB是 "jumping back",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24388942/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com