在gdb(MinGW)中输入重定向

时间:2010-08-23 02:14:08

标签: gdb mingw

我正在尝试让gdb运行带有输入重定向到stdin的程序。例如,如果没有gdb,我会运行这样的程序:

prog < input.txt

现在在gdb中,通常的方法是run < input.txt。但是,它对我不起作用,当这样做时,没有任何东西被重定向到stdin。

我正在使用Windows和MinGW。可能是什么问题?

3 个答案:

答案 0 :(得分:13)

早在90年代末期,破解的命令行重定向就是known and assumed limitation。我怀疑它仍然是这样,因为mingw32的{​​{1}}端口仍然兴高采烈地将所有gdb个参数(包括重定向)逐字传递给debugee。

几种可行的解决方法:

  1. 如果您可以选择更改命令行界面,请实施run的建议
  2. 否则,如果您可以在要调试的点之前轻松暂停该进程,则从shell调用debugee(带有重定向)并在它运行时附加到它
  3. 否则,如果您有debugee(bbadour)的符号或者您知道gcc -gmain())的地址并且可以在那里设置断点,请继续以下方式(使用gcc -Wl,-Map,mapfile测试):

    mingw gdb 6.8.0

答案 1 :(得分:2)

我在这里遇到了同样的问题,我养成了添加命令行参数以便从文件中获取输入的习惯。

e.g。使用argc和argv解析“-i ifile”参数以从ifile而不是stdin获取输入并解析“-o ofile”以将输出写入ofile而不是stdout。

然后我只使用这些参数而不是重定向。

MinGW附带的工具通常不是最新版本,并且通常省略功能。 ::耸肩::

答案 2 :(得分:0)

从GDB 8.0开始支持输入重定向。从新闻文件中:

  • 在MS-Windows上进行的本地调试支持命令行重定向

    用于在MS-Windows上启动程序的命令行参数 现在可以包含本机Windows支持的重定向符号 外壳,例如'<','>','>>','2>&1'等。这会影响GDB 命令,例如“运行”,“启动”和“设置参数”,以及 相应的MI功能。