When running a program on gdb, usually, the arguments for the program are given at run
command. Is there a way to run the program using gdb and as well as give arguments within a shell script?
I saw an answer in a related question, mentioning that we can attach the gdb to the program after script starts executing. But then I will have to 'wait' the program.
I'm curious whether there is any other way to do this.
If the
--args
parameter is not working on your machine (i.e. on Solaris 8), you may start gdb likeAnd you can combine this with inputting a file to stdin and "running immediatelly":
gdb has
--init-command <somefile>
where somefile has a list of gdb commands to run, I use this to have//GDB
comments in my code, then `as a script, which puts the command to load the debug symbols, and then generates a list of break commands to put a break point for each
//GDB
comment, and starts it runningYou can run gdb with --args parameter,
If you want it to run automatically, place some commands in a file (e.g. 'run') and give it as argument: -x /tmp/cmds. Optionally you can run with -batch mode.
-ex=r
is short for-ex=run
and tells gdb to run your program immediately, rather than wait for you to type "run" at the prompt. Then--args
says that everything that follows is the command and arguments, just as you'd normally type them at the commandline prompt.You could create a file with context:
And call gdb like
Another way to do this, which I personally find slightly more convenient and intuitive (without having to remember the
--args
parameter), is to compile normally, and user arg1 arg2 arg3
directly from withingdb
, like so: