Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to load program reading stdin and taking parameters in gdb?

I have a program that takes input from stdin and also takes some parameters from command line. It looks like this:

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

I try to debug the code with gdb inside emacs, by M-x gdb, I try to load the program with the command:

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

However, gdb does not like it.

Question cribbed from here. Unfortunately I don't understand the solution and am not sure what to do beyond compiling with the -g option and running the command M-x gdb.

like image 959
vinc456 Avatar asked Jan 18 '09 17:01

vinc456


People also ask

How do I run a program under GDB?

Use the run command to start your program under GDB. You must first specify the program name (except on VxWorks) with an argument to GDB (see section Getting In and Out of GDB), or by using the file or exec-file command (see section Commands to specify files).

How do you set arguments in GDB?

Type "gdb [filename]" where [filename] is the name of the compiled file you wish to debug (the name you type to run your program). Set the arguments. If your program runs with any command line arguments, you should input them with "set args".

How do I pass command line arguments to GDB?

You can optionally have gdb pass any arguments after the executable file to the inferior using --args . This option stops option processing. This will cause gdb to debug gcc , and to set gcc 's command-line arguments (see Arguments) to ` -O2 -c foo.


1 Answers

If you were doing it from a shell you'd do it like this:

% gdb myprogram gdb> run params ... < input.txt 

This seems to work within emacs too.

like image 184
Alnitak Avatar answered Sep 29 '22 01:09

Alnitak