这是我尝试的,但似乎不起作用:
(gdb) call printf("%d",6)
$8 = 1
答案 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()
命令调用程序上下文中的函数。