使用cygwin的gdb输入重定向

使用cygwin的gdb输入重定向,gdb,cygwin,Gdb,Cygwin,gdb中的输入重定向在Cygwin中似乎不起作用 (gdb) run < input.txt (gdb)运行

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

(gdb) run < input.txt
(gdb)运行

是否有其他方法重定向Cygwin的gdb中的输入???

不幸的是,在Cygwin中运行gdb时,这是不可能的。这个问题已经存在了很长一段时间,但显然很难解决,而且gdb开发人员可能更愿意花时间在与更常见的环境(如Linux)相关的特性/问题上

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

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

    > gdb yourexecutable
    (gdb) break main
    (gdb) run
    (gdb) call dup2(open("input.txt", 0), 0)
    (gdb) continue
    
    这将在
    main
    函数上设置一个断点,然后执行程序,该程序将在进入
    main
    后立即中断。然后用于用输入文件的文件描述符替换stdin fd(
    0


这是Cygwin的一个局限性,有各种解决方法,您可以尝试解决这个相关问题:唉,这导致了“GNU gdb(gdb)(Cygwin 8.1.1-1)8.1.1”的分段错误(堆芯转储)
:(