Вызовите gdb для автоматической передачи аргументов отлаживаемой программе

38
задан Nathan Fellman 22 October 2010 в 18:30
поделиться

5 ответов

Если Вы хотите выполнить некоторые команды через GDB и затем иметь его выход или работать к завершению, просто сделайте

echo commands | gdb X

, Если Вы хотите оставить его в командной строке после выполнения тех команд, можно сделать

(echo commands; cat) | gdb X

, Это приводит к повторению команд к GDB, и затем Вы вводите в эти cat процесс, который копирует его stdin в stdout, который передается по каналу в GDB.

28
ответ дан Adam Rosenfield 27 November 2019 в 03:03
поделиться

Самый легкий способ сделать это, учитывая программу 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 является исполняемый файл для отладки, и все аргументы после этого, передаются , как к тому исполняемому файлу.

85
ответ дан Nathan Fellman 27 November 2019 в 03:03
поделиться

cat F | gdb X должно быть идентичным. Таким образом, можно использовать что-либо, что производит вывод, и передайте это по каналу в gdb вместо команды кошки здесь.

я предполагаю, что Вы корректны и чтения gdb от stdin.

0
ответ дан Nathan Fellman 27 November 2019 в 03:03
поделиться
gdb target -e "my-automation-commands"

my-automation-commands, содержащие все, что обычно хотите запустить,

break 0x123
set args "foo" bar 2
r

Не строго временный файл, если у вас есть несколько стандартных сценариев инициализации;)

1
ответ дан 27 November 2019 в 03:03
поделиться

есть опция -x , например

gdb -x gdb_commands exe_file

где gdb_commands может быть, например (в случае эмулятора Android):

target remote :5039
8
ответ дан 27 November 2019 в 03:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: