перенаправление ввода gdb с помощью cygwin
Кажется, что перенаправление ввода в gdb не работает в Cygwin e.g
(gdb) run < input.txt
есть ли другой способ перенаправить ввод в gdb Cygwin??
1 ответов
к сожалению, это невозможно при запуске gdb в cygwin. The ошибка существует долгое время, но, по-видимому, это трудно исправить - и, вероятно, разработчики gdb предпочитают тратить время на функции/проблемы, относящиеся к более распространенным средам (например, Linux).
существуют различные возможные обходные пути; я бы предпочел первый, так как он самый чистый, а также полезный при отладке / запуске на cygwin:
- добавить команду аргумент строки, например
-f whatever
Сwhatever
быть именем файла для чтения. Если аргумент отсутствует или имеет значение-
, читать из stdin. The-f -
опция, конечно, необязательна, но для Аргументов, принимающих имена файлов, это общий стандарт (если это имеет смысл) для обработки-
как "использовать stdin / out". -
используйте упомянутый взлом gdb здесь для переназначения stdin в файл, открытый вручную внутри приложения:
> gdb yourexecutable (gdb) break main (gdb) run (gdb) call dup2(open("input.txt", 0), 0) (gdb) continue
это устанавливает точка останова на
main
функция, затем выполняет программу, которая сломается сразу после вводаmain
. Тогдаdup2
используется для замены stdin fd (0
) с файловым дескриптором входного файла.