Как загрузить программу, читающую stdin и принимающую параметры в gdb? - PullRequest
92 голосов
/ 18 января 2009

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

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 ]

118 голосов
/ 18 января 2009

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

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

Это похоже на работу и в emacs.

27 голосов
/ 19 сентября 2011

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

$ 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 run (r) по умолчанию использует аргументы, заданные ранее с помощью set args.

7 голосов
/ 20 января 2009

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

gdb gdbarg1 gdbarg2 --args yourprog arg1 arg2 -x arg3
0 голосов
/ 14 февраля 2009

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

$ gdb myprogram xxx

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

...