使用cygwin的gdb输入重定向

时间:2012-01-27 09:59:07

标签: gdb cygwin

似乎gdb中的输入重定向在Cygwin中不起作用,例如

(gdb) run < input.txt

还有其他方法可以在Cygwin的gdb中重定向输入吗?

1 个答案:

答案 0 :(得分:12)

不幸的是,在cygwin中运行gdb时,这是不可能的。 bug很长一段时间都存在引用,但显然很难解决 - 可能gdb开发人员更喜欢花时间处理与更常见环境(如Linux)相关的功能/问题。

有各种可能的解决方法;我更喜欢第一个,因为它是最干净的,也是有用的,而不是在cygwin上调试/运行:

  • 添加命令行参数,例如-f whatever whatever是要读取的文件名。如果参数不存在或设置为-,则从标准输入读取。 -f -选项当然是可选的,但对于接受文件名的参数,将-作为“使用stdin / out”处理是一个通用标准(只要有意义)。
  • 使用提到的here gdb hack将stdin重新映射到应用程序内的手动打开文件:

    > gdb yourexecutable
    (gdb) break main
    (gdb) run
    (gdb) call dup2(open("input.txt", 0), 0)
    (gdb) continue
    

    这会在main函数上设置断点,然后执行将在输入main后立即中断的程序。然后使用dup2将stdin fd(0)替换为输入文件的文件描述符。