GDB跳过行为

时间:2018-04-19 20:18:15

标签: c debugging gdb visual-studio-debugging

从在Visual Studio中调试C#到GDB,我注意到在设置断点之后踩到时,GDB"跳过"结束块,其他块或其他代码的大括号。虽然Visual Studio经历了完整的路径,但能够查看"发生的所有事情"。

例如,如果我写:

if (1) {
    int a = 0;
}
else {
    int b = 0;
}

在Visual Studio / C#中,调试器将遍历第1,2,3,4行,最后是6行,然后继续。

在GDB / C中,调试器将经过1,2,然后跳过第3,4和6行,然后转到其余代码。

我试图研究禁用优化或范围步长,但这些似乎与此行为无关。

这就是我编写程序的方式:

gcc -g -O0 src/main.c src/parser.c -o bin/masc

我观察GDB(或Visual Studio)固有的东西吗?是否可以选择在GDB中更改此行为?

1 个答案:

答案 0 :(得分:0)

它跳过:

else {
int b = 0;
}

因为在这种情况下,它将永远不会执行,并且会在编译过程中被丢弃以提高效率。