如何在gdb中看到printf的输出?

时间:2011-03-25 05:42:11

标签: c linux gdb

这是我尝试的,但似乎不起作用:

(gdb) call printf("%d",6)
$8 = 1

2 个答案:

答案 0 :(得分:10)

您无法看到结果,因为 stdout (FILE *)有一个输出缓冲区。在缓冲区已满或遇到“\ n”之前,它不会向屏幕输出任何内容。

所以请像这样调用printf:

(gdb) call (int)printf("%d\n", 6)
6
$6 = 2

BTW,“$ 6 = 2”是 printf 的结果值。

答案 1 :(得分:1)

看起来它工作正常 - printf返回1,表示它已成功将单个字符打印到标准输出。

请注意,标准输出不一定显示在运行gdb的同一终端中 - 它将显示在您正在调试的程序具有其标准输出的任何位置(就像程序本身已调用{{ 1}} - gdb中的printf()命令调用程序上下文中的函数。