为什么GDB'step'命令跳过struct声明?

时间:2013-09-30 06:52:27

标签: gdb

int main(void)
{
    char A[] ='hi';
    struct dayInfo day;
    int x = 1;
}

所以在gdb中我做了

gdb> breakpoint main
gdb> run

输出:

Breakpoint 1 , main()  line 1

char A[]= 'hi';

gdb>  step

输出:

int x = 1;   line 3

问:刚刚开始学习GDB,我不明白为什么'step'命令会跳到

int x = 1;   line 3.

为什么不是struct dayInfo day;

1 个答案:

答案 0 :(得分:6)

声明局部变量时,不执行任何代码。编译器通过创建更大的堆栈帧来考虑声明,因此在输入函数时有效地执行变量声明。没有代码,gdb可以在第1行和第3行之间停止,因此它会继续到下一行。