【发布时间】:2018-09-30 10:58:33
【问题描述】:
从在 Visual Studio 中调试 C# 到 GDB 时,我注意到在设置断点后单步执行时,GDB “跳过”块、else 块或其他代码的右大括号。而 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 中更改此行为?
【问题讨论】:
-
你在
gdb中执行了什么命令?你试过breakpoints吗? -
@Sergio 是的,我已经扩展了问题以包括这个。
标签: c debugging gdb visual-studio-debugging