Ответ 1
К сожалению, это невозможно при запуске gdb в cygwin. Ошибка существует для цитаты долгое время, но, по-видимому, ее трудно исправить - и, вероятно, разработчики gdb предпочитают тратить время на функции/проблемы относящихся к более распространенным средам (таким как Linux).
Существуют различные возможные обходные пути; Я бы предпочел первый, так как это самый чистый и полезный, не отлаживая/работая на 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
) файловым дескриптором входного файла.