2
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,我不明白为什么“步骤”命令会跳到

int x = 1;   line 3.

为什么不是struct dayInfo day;

4

1 回答 1

6

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

于 2013-09-30T07:01:33.680 回答