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에 시작 인수를 알릴 필요가 없습니다.