我正在尝试让 gdb 运行将输入重定向到 stdin 的程序。例如,如果没有 gdb,我会运行这样的程序:
prog < input.txt
现在在 gdb 中,通常的方法是run < input.txt
。但是,它对我不起作用,并且执行此操作时不会将任何内容重定向到标准输入。
我正在使用带有 MinGW 的 Windows。可能是什么问题呢?
早在 90 年代末,损坏的命令行重定向就曾是一个问题。已知和假定的限制 https://sourceware.org/ml/cygwin/1999-04/msg00355.html。我怀疑情况仍然如此,因为mingw32
的港口gdb
仍然兴高采烈地逐字逐句地传递一切run
传递给调试者的参数(包括重定向)。
几种可能的解决方法:
- 如果您可以选择更改命令行界面,则实施
bbadour
的建议
- 否则,如果您可以在要调试的点之前轻松挂起进程,请从 shell 调用被调试程序(通过重定向)并在它已经运行时附加到它
-
否则,如果您有调试者的符号(gcc -g
)或者您知道地址main()
(gcc -Wl,-Map,mapfile
)并可以在那里设置断点,按以下方式进行(使用测试mingw gdb 6.8.0
):
# gdb debugee.exe
(gdb) b main
(gdb) run non-redirect-arguments-if-any
(gdb) p dup2(open("/tmp/input.txt", 0), 0)
(gdb) c
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)