似乎gdb中的输入重定向在Cygwin中不起作用,例如
(gdb) run < input.txt
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以在Cygwin的gdb中重定向输入?
Thi*_*ter 12
不幸的是,在cygwin中运行gdb时,这是不可能的.该错误很长一段时间都存在,但显然这是一个很难解决的问题 - 可能gdb开发人员更喜欢花时间处理与更常见环境(如Linux)相关的功能/问题.
有各种可能的解决方法; 我更喜欢第一个,因为它是最干净的,也是有用的,而不是在cygwin上调试/运行:
-f whatever与whatever正在从中读取数据的文件名.如果参数不存在或设置为-,则从stdin读取.该-f -选项当然是可选的,但对于接受文件名的参数,它是一个通用标准(只要它有意义)-作为"使用stdin/out" 来处理.使用此处提到的gdb hack 将stdin重新映射到应用程序内的手动打开的文件:
> gdb yourexecutable
(gdb) break main
(gdb) run
(gdb) call dup2(open("input.txt", 0), 0)
(gdb) continue
Run Code Online (Sandbox Code Playgroud)
这会在main函数上设置断点,然后执行将在输入后立即中断的程序main.然后dup2用于将stdin fd(0)替换为输入文件的文件描述符.
| 归档时间: |
|
| 查看次数: |
1948 次 |
| 最近记录: |