[emacs] stdin을 읽고 gdb에서 매개 변수를 사용하는 프로그램을로드하는 방법은 무엇입니까?

stdin에서 입력을 받고 명령 줄에서 일부 매개 변수를 취하는 프로그램이 있습니다. 다음과 같이 보입니다.

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

emacs 내부에서 gdb로 코드를 디버그하려고합니다. Mx gdb에서 다음 명령으로 프로그램을로드하려고합니다.

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

그러나 gdb는 그것을 좋아하지 않습니다.

여기 에서 질문이 작성 되었습니다 . 불행히도 솔루션을 이해하지 못하고 -g옵션으로 컴파일하고 Mx 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는 프로세스 ID입니다. 그러면 gdb에 시작 인수를 알릴 필요가 없습니다.


답변