Ответ 1
Если вы делали это из оболочки, вы сделали бы это следующим образом:
% gdb myprogram
gdb> run params ... < input.txt
Это похоже на работу с emacs тоже.
У меня есть программа, которая принимает 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.
Если вы делали это из оболочки, вы сделали бы это следующим образом:
% 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 run
(r
) использует по умолчанию аргументы, установленные ранее с помощью set args
.
Для полноты использования при запуске сеанса отладки существует также опция -args. то есть)
gdb gdbarg1 gdbarg2 --args yourprog arg1 arg2 -x arg3
И если вам не нужно отлаживать с самого начала, вы также можете подключиться к уже запущенному процессу, используя:
$ gdb myprogram xxx
где xxx - идентификатор процесса. Тогда вам не нужно указывать gdb исходные аргументы.