2012-10-27 4 views
24

프로그램이있어서 gdb를 사용하여 프로그램을 디버깅하려고합니다. 프로그램 안에는 사용자가 stdin을 사용하여 입력을 요구하는 메소드가 있습니다. 내가 gdb에있을 때이 입력을 어떻게 입력 할 수 있습니까? 어떻게하면 내 방법이 작동 하는지를 추적 할 수 있습니까?GDB를 사용하여 stdin에서 사용자 입력을받는 프로그램을 디버깅하는 방법은 무엇입니까?

+0

간단한 입력 직접 입력의 경우 질문은 다음과 동일합니다. http://stackoverflow.com/questions/455544이 경우에는 해당되지 않는 경우가 있습니다. 1) 표준 입력을 결정하기 위해 stdout을 볼 필요가 있습니다 2) 실제 타이밍과 키 누름은 ncurses 에서처럼 필요합니다. 그럴 경우 아마 그렇게 할 수도 있습니다 : http://stackoverflow.com/questions/5579901/automated-test-tools-for-linux-ncurses –

답변

21
$ cat >foo <<EOF 
something 
EOF 
$ gdb -quiet /bin/cat 
Reading symbols from /bin/cat...(no debugging symbols found)...done. 
Missing separate debuginfos, use: debuginfo-install coreutils-8.12-7.fc16.x86_64 
(gdb) run <foo 
Starting program: /bin/cat <foo 
something 
[Inferior 1 (process 22436) exited normally] 
(gdb) 
1

난 그냥이 어제 같은 것을 통해 가서 내가 인터넷에서 필요한 정확하게 찾을 수 없었기 때문에 GDB의 명령 "도움"의 무리를 통해에 반복.

나는 gdb를 시작한 후 set variable *your_variable* = *your desired input*을 사용하고 코드를 실행하기 시작했습니다. 매력처럼 일했습니다.

나는 이것이 늦었다 고 알고 있지만, 아마도 다른 사람을 도울 것입니다.

+1

어떻게 이것을 stdin에 사용할 수 있습니까? – Aralox

관련 문제