Если Вы хотите выполнить некоторые команды через GDB и затем иметь его выход или работать к завершению, просто сделайте
echo commands | gdb X
, Если Вы хотите оставить его в командной строке после выполнения тех команд, можно сделать
(echo commands; cat) | gdb X
, Это приводит к повторению команд к GDB, и затем Вы вводите в эти cat
процесс, который копирует его stdin в stdout, который передается по каналу в GDB.
Самый легкий способ сделать это, учитывая программу X
и список параметров a b c
:
X a b c
должен использовать gdb
--args
опция, следующим образом:
gdb --args X a b c
<час> gdb --help
говорит следующее приблизительно --args
:
--args Arguments after executable-file are passed to inferior
, Что означает, что первым аргументом после --args
является исполняемый файл для отладки, и все аргументы после этого, передаются , как к тому исполняемому файлу.
cat F | gdb X
должно быть идентичным. Таким образом, можно использовать что-либо, что производит вывод, и передайте это по каналу в gdb вместо команды кошки здесь.
я предполагаю, что Вы корректны и чтения gdb от stdin.
gdb target -e "my-automation-commands"
my-automation-commands, содержащие все, что обычно хотите запустить,
break 0x123
set args "foo" bar 2
r
Не строго временный файл, если у вас есть несколько стандартных сценариев инициализации;)
есть опция -x , например
gdb -x gdb_commands exe_file
где gdb_commands может быть, например (в случае эмулятора Android):
target remote :5039