Как загрузить программу чтения stdin и принимая параметры в gdb?


у меня есть программа, которая принимает ввод от stdin а также принимает некоторые параметры из командной строки. Выглядит это так:

cat input.txt > myprogram -path "/home/user/work"

Я пытаюсь отладить код с gdb внутри emacs, по M-x gdb, я пытаюсь загрузите программу с помощью команды:

gdb cat input.txt > myprogram -path "/home/user/work"

однако gdb это не нравится.

вопрос шпаргалка от здесь. К сожалению, я не понимаю решение и не уверен, что делать дальше компиляция с помощью -g опция и запуск команды M-x gdb.

4 85

4 ответа:

Если бы вы делали это из оболочки, вы бы сделали это так:

% gdb myprogram
gdb> run params ... < input.txt

это, кажется, работает в emacs тоже.

есть несколько способов сделать это:

$ gdb myprogram
(gdb) r -path /home/user/work < input.txt

или

$ gdb myprogram
(gdb) set args -path /home/user/work < input.txt
(gdb) r

или

$ gdb -ex 'set args -path /home/user/work < input.txt' myprogram
(gdb) r

где gdb (r) использует по умолчанию аргументы, заданные ранее с помощью set args.

для полноты при запуске сеанса отладки также есть опция --args. т. е.)

gdb gdbarg1 gdbarg2 --args yourprog arg1 arg2 -x arg3

и если вам не нужно отлаживать с самого начала, вы также можете прикрепить к уже запущенному процессу с помощью:

$ gdb myprogram xxx

где xxx-идентификатор процесса. Тогда вам не нужно сообщать gdb начальные аргументы.