FranXh
FranXh

Reputation: 4771

How to debug a program that takes user input from stdin with GDB?

I have a program and I am trying to debug it using gdb. Inside the program I have methods that require the user to enter an input using stdin. How can I enter this input when I am in gdb? So that I can trace how my methods work?

Upvotes: 50

Views: 43175

Answers (3)

Hedede
Hedede

Reputation: 1173

You can also run your program first, then attach GDB to it:

gdb --pid $(pgrep your_program)

This way you will be able to run your program interactively in a separate terminal.

Note: attaching GDB to another process might require using sudo or changing permissions.

Upvotes: 10

BWONG
BWONG

Reputation: 153

I just went through something like this yesterday and recursed through a bunch of "help" commands in gdb because I couldn't find exactly what I needed on the Internet.

I used set variable *your_variable* = *your desired input* after I had started gdb and began running my code. Worked like a charm.

I know this is late, but maybe it'll help someone else.

Upvotes: 3

matt
matt

Reputation: 5614

$ 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) 

Upvotes: 33

Related Questions