перенаправление ввода 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) с файловым дескриптором входного файла.