Существуют различные возможные обходные пути; Я бы предпочел первый, так как это самый чистый и полезный, не отлаживая/работая на cygwin:
Добавьте аргумент командной строки, например. -f whatever с whatever, являющимся именем файла для чтения. Если аргумент отсутствует или установлен в -, прочитайте его из stdin. Опция -f - необязательна, но для аргументов, принимающих имена файлов, это обычный стандарт (если имеет смысл) обрабатывать - как "использовать stdin/out".
Используйте hdb 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) файловым дескриптором входного файла.