我正在尝试调试 Eclipse CDT 附带的简单 Hello World 程序。运行程序通常工作正常,但是当它通过 Debug模式运行时,puts()
不会在控制台上打印任何内容。
我尝试直接使用 gdb 运行相同的程序,它工作正常,按预期打印 "!!!Hello World!!!"
。
为什么通过 Eclipse 在 Debug模式下运行时 puts()
不打印任何内容?
我在 Windows 上安装了 MinGW,运行 gcc 4.5.0、gdb 7.2 和 CDT 7.0.1
最佳答案
感谢Swiss指出了正确的方向。
在每个 printf
,puts
语句后面添加 fflush(stdout)
不适合大项目调试时(当释放,最好在适当的时候使用fflush()
)。
然后,我们可以使用预处理器指令#ifdef
&& setbuf()
。
在 Eclipse 中,您的 C 项目 -> 属性 -> C/C++ Build -> 设置:
配置=“调试[事件]”
-> 工具设置 -> GCC C 编译器 -> 符号 -> 添加“_DEBUG”,
然后在你的 main() 中,使用:
#ifdef _DEBUG
setbuf(stdout,NULL); // this disables buffering for stdout.
#endif
关于c - Eclipse CDT 中的调试问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3954994/