Ошибка перенаправления канала GDB: (GDB) Обнаружено зависание на FD 0 - PullRequest
2 голосов
/ 14 ноября 2011

Помогите, как мне это исправить? Я не могу перенаправить команду из стандартного ввода в GDB.

Я получаю эту ошибку:

charmae@charmae-pc:~/workspace/AVT$ echo "list" | gdb a.out
GNU gdb (Ubuntu/Linaro 7.3-0ubuntu2) 7.3-2011.08
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /home/charmae/workspace/AVT/a.out...done.
(gdb) Hangup detected on fd 0
error detected on stdin

Ответы [ 2 ]

2 голосов
/ 22 мая 2012

Другой способ, который работает хорошо, - перенаправить ввод в gdb, используя следующий документ:

gdb -quiet -nx << EndOfInput
thread apply all bt
quit
EndOfInput

Это позволяет написать сценарий, который управляет gdb без использования временных файлов.Похоже, что сообщение «Обнаружено зависание» полностью исключено.

0 голосов
/ 14 ноября 2011

Если ваша цель - при запуске GDB выполнить команду «list», самый простой способ сделать это - использовать файл запуска .gdbinit. Например:

$ echo list > .gdbinig
$ gdb a.out

Если вы хотите, чтобы gdb выходил после выполнения команд, перечисленных в .gdbinit, выполните:

$ echo quit >> .gdbinit
...