我正在尝试让gdb运行带有输入重定向到stdin的程序。例如,如果没有gdb,我会运行这样的程序:
prog < input.txt
现在在gdb中,通常的方法是run < input.txt
。但是,它对我不起作用,当这样做时,没有任何东西被重定向到stdin。
我正在使用Windows和MinGW。可能是什么问题?
答案 0 :(得分:13)
早在90年代末期,破解的命令行重定向就是known and assumed limitation。我怀疑它仍然是这样,因为mingw32
的{{1}}端口仍然兴高采烈地将所有gdb
个参数(包括重定向)逐字传递给debugee。
几种可行的解决方法:
run
的建议否则,如果您有debugee(bbadour
)的符号或者您知道gcc -g
(main()
)的地址并且可以在那里设置断点,请继续以下方式(使用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功能。