gdb不会接受Emacs中的stdin重定向

时间:2009-04-20 17:18:20

标签: c++ emacs gdb cygwin stdin

我正在尝试使用emacs中的gdb模式调试程序。它是用g ++编译的,我正在使用cygwin。我的程序接受一个命令行参数,并从stdin中获取输入,我从文件重定向,如下所示:

program.exe inputFile.dat <otherInput.dat

问题是,gdb正在发送字符串

"<otherInput.dat"

作为命令行参数,而不是重定向stdin。如何强制gdb重定向stdin?

编辑:

在gdb中,我正在使用命令:

run inputFile.dat <otherInput.dat

当我在emacs之外使用gdb时,它不起作用。

编辑#2:

dfa指出了一个类似的问题:How to load program reading stdin and taking parameters in gdb?

不幸的是,这个问题的公认答案对我不起作用......这可能是与cygwin相关的错误吗?

2 个答案:

答案 0 :(得分:3)

您似乎必须使用run命令:

  

您可以使用shell重定向重定向程序的输入和/或输出,运行&gt;命令。例如,

run > outfile

http://sourceware.org/gdb/current/onlinedocs/gdb_5.html#SEC24

答案 1 :(得分:2)

如果您正在使用bash,则可以通过执行PROGRAM ARGS < FILE & jobs -x gdb PROGRAM %1立即将gdb附加到流程。根据您使用的shell,您可能会发现自己必须使用更多创造性方法(可能涉及将ps -C的输出重定向到gdb的命令行)。