2

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

program.exe inputFile.dat <otherInput.dat

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

"<otherInput.dat"

作为命令行参数而不是重定向标准输入。如何强制 gdb 重定向标准输入?

编辑:

在 gdb 中,我使用以下命令:

run inputFile.dat <otherInput.dat

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

编辑#2:

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

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

4

2 回答 2

3

看来您必须使用以下run命令:

您可以使用带有 run > 命令的 shell 重定向来重定向程序的输入和/或输出。例如,

run > outfile

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

于 2009-04-20T17:22:04.860 回答
2

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

于 2009-04-21T00:10:11.697 回答