【发布时间】:2013-12-11 15:07:27
【问题描述】:
我有一个漂亮的打印数据结构的函数,它的函数原型是:
void print_mode(FILE *fp, Mode *mode);
FILE* 允许您将输出重定向到您想要的任何位置,例如stdout、stderr、文件等。mode就是数据结构
我正在尝试从 gdb 中调用此函数并希望将输出定向到 gdb 控制台窗口 stdout?
我试过了:
(gdb) p print_mode(STDOUT,fragment_mode)
No symbol "STDOUT" in current context.
(gdb) p print_mode(stdout,fragment_mode)
$17 = void
两者都不起作用
有什么想法可以让函数的输出显示在 gdb 控制台中吗?
应该添加 - 我在 linux 下的 emacs 24.2.1 中使用 gdb
【问题讨论】:
-
尝试查看
info terminal、run > redirect-file和tty device-name。会有设备名称相当于标准输入、标准输出、ala /dev/tty -
试试
call print_mode(stdout,fragment_mode)而不是p print_mode(stdout,fragment_mode)? -
STDOUT可以是宏吗?找出它扩展的内容。 -
@anishsane:就程序本身打印的内容而言,
print和call应该没有任何区别。 -
让我们检查一下stdout是否有一个合理的值。 gdb 中的
call fprintf(stdout, "test %d\n", 5)是否产生输出?