【发布时间】:2019-10-14 10:35:47
【问题描述】:
我使用 Visual Studio 2013 编译和调试 C 程序。然后在 gcc 中编译相同的程序并尝试调试,但由于某种原因,我无法 跳转 到特定行。我得到的消息是当前文件中没有行 line_number。
这是 C 代码
#include<stdio.h>
int main() {
while (1) {
}
printf("Hello World!");
printf("Bye World!");
return 0;
}
现在对于 VS 2013 中的上述代码,我可以移动黄色箭头并使其指向打印功能,但在 GDB 的情况下,我无法使用 jump 移动到打印功能。
我使用 gcc -g file.c -o file 来编译我的 C 文件。我的猜测是因为它是一个无限循环,一些优化只显示指令直到循环。
编辑:
我使用的 GDB 命令是
1) gdb 2) 文件 exec_name 3) 断行号 4) 运行 5) 跳转行号
如果我将循环修改为
int x = 1;
while (x) {
}
跳跃效果很好
【问题讨论】:
-
你到底是怎么做到的?
-
GCC 可以优化这些行。
-
@Shawn 我没听懂你?你是在问我如何使用 gdb
-
@ks1322 有什么办法不这样做吗?如果我将循环更改为 int x = 1; while (x) {} 我可以跳转到打印功能
-
@AAB 为什么你需要这样编程?为什么不以更“常见”的方式以适合您需求的方式构建源代码呢?你的目标到底是什么?
标签: c visual-studio gcc gdb