2012-10-27 26 views
24

Mam program i próbuję debugować go przy użyciu gdb. Wewnątrz programu mam metody, które wymagają od użytkownika wprowadzenia danych wejściowych za pomocą stdin. Jak mogę wprowadzić to wejście, gdy jestem w gdb? Czy mogę prześledzić, jak działają moje metody?Jak debugować program, który pobiera dane wejściowe użytkownika ze standardowego wejścia z GDB?

+0

Dla prostszego przypadku bezpośredniego wprowadzania, pytanie jest takie samo: http://stackoverflow.com/questions/455544 Istnieją jednak przypadki, które nie obejmują: 1) musisz zobaczyć stdout, aby zdecydować stdin 2) potrzebne są aktualne taktowanie i naciśnięcia klawiszy, jak w ncurses. W takich przypadkach może oczekiwać: http://stackoverflow.com/questions/5579901/automated-test-tools-for-linux-ncurses –

Odpowiedz

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

Właśnie przeszedł przez coś takiego wczoraj i recursed przez kilka „pomocy” polecenia w gdb, bo nie mogłem znaleźć dokładnie to, co potrzebne w Internecie.

Użyłem set variable *your_variable* = *your desired input* po uruchomieniu gdb i uruchomieniu mojego kodu. Pracował jak urok.

Wiem, że jest późno, ale może pomoże to komuś innemu.

+1

Jak byś tego użył na stdin? – Aralox

Powiązane problemy