我正在尝试让gdb运行带有输入重定向到stdin的程序.例如,没有gdb我会运行这样的程序:
prog < input.txt
Run Code Online (Sandbox Code Playgroud)
现在在gdb中,通常的做法是run < input.txt
.但是,它对我不起作用,当这样做时,没有任何东西被重定向到stdin.
我正在使用Windows与MinGW.可能是什么问题呢?
vla*_*adr 13
早在90年代末期,破坏的命令行重定向就是一个众所周知的假定限制.我怀疑的是,它仍然是这样,因为mingw32
港口gdb
仍然兴高采烈地传递逐字的所有run
参数(包括重定向)到被调试.
几种可能的解决方法:
bbadour
建议否则,如果你有符号被调试(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
Run Code Online (Sandbox Code Playgroud)我在这里遇到了同样的问题,我刚刚养成了添加命令行参数以允许从文件中获取输入的习惯。
例如,使用 argc 和 argv 解析“-i ifile”参数以从 ifile 而不是 stdin 获取输入,并解析“-o ofile”以将输出写入 ofile 而不是 stdout。
然后我只使用这些参数而不是重定向。
MinGW 附带的工具通常不是最新版本,并且经常省略某些功能。::耸肩::
归档时间: |
|
查看次数: |
5254 次 |
最近记录: |