Подтвердить что ты не робот

Как отлаживать программу, которая принимает пользовательский ввод из stdin с GDB?

У меня есть программа, и я пытаюсь ее отладить с помощью gdb. Внутри программы есть методы, которые требуют ввода пользователем ввода с помощью stdin. Как я могу ввести этот ввод, когда я нахожусь в gdb? Чтобы я мог проследить, как работают мои методы?

4b9b3361

Ответ 1

$ cat >foo <<EOF
something
EOF
$ gdb -quiet /bin/cat
Reading symbols from /bin/cat...(no debugging symbols found)...done.
Missing separate debuginfos, use: debuginfo-install coreutils-8.12-7.fc16.x86_64
(gdb) run <foo
Starting program: /bin/cat <foo
something
[Inferior 1 (process 22436) exited normally]
(gdb) 

Ответ 2

Я только что прошел через что-то вроде этого вчера и перешел через кучу команд "help" в gdb, потому что я не мог найти именно то, что мне нужно в Интернете.

Я использовал set variable *your_variable* = *your desired input* после того, как начал gdb и начал запускать свой код. Работали как шарм.

Я знаю, что это поздно, но, возможно, это поможет кому-то другому.

Ответ 3

Вы также можете запустить свою программу сначала, а затем подключить к ней GDB:

gdb --pid $(pgrep your_program)

Таким образом, вы сможете интерактивно запускать свою программу в отдельном терминале.