我在 Fedora 20 上使用 Anjuta 和 gdb 并创建了一个 C Makefile 项目。代码如下所示:
#include <stdio.h>
int main (void)
{
° printf ("1");
° printf ("2");
° printf ("3");
return (0);
}
° 表示我在该位置设置了断点。
现在,当我调试代码时,当当前行是这些 printf 函数之一时没有输出。仅当我退出 main 时,终端中才会出现“123”。
如果我将\n 添加到第二个 printf 参数,那么当我从断点 2 移动到第三个断点时,输出将显示为“12”。
最佳答案
默认情况下,stdout 在写入终端时是行缓冲的,在写入任何其他类型的流时是完全缓冲的。由于您没有打印任何换行符,因此输出正在缓冲。您可以使用 setbuf()
更改缓冲模式,以换行符结束每个字符串,或者在需要打印时调用 fflush()
。
关于c - 为什么单步执行代码时 printf 输出没有立即出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46793501/