How to automatically run the executable in GDB?

I'd like to have gdb immediately run the executable, as if I'd typed "run" (motivation: I dislike typing "run").

One way is to pipe the command to gdb like this:

$ echo run | gdb myApp

But the problem with this approach is that you lose interactivity with gdb, eg. if a breakpoint triggers or myApp crashes, gdb quits. This method is discussed here.

Looking at the options in --help, I don't see a way to do this, but perhaps I'm missing something.


Solution 1:

gdb -ex run ./a.out

If you need to pass arguments to a.out:

gdb -ex run --args ./a.out arg1 arg2 ...

EDIT: Orion says this doesn't work on Mac OSX.

The -ex flag has been available since GDB-6.4 (released in 2005), but OSX uses Apple's fork of GDB, and the latest XCode for Leopard contains GDB 6.3.50-20050815 (Apple version gdb-967), so you are out of luck.

Building current GDB-7.0.1 release is one possible solution. Just be sure to read this.

Solution 2:

I would use a gdb-script:

gdb -x your-script

where your-script contains something like:

file a.out
b main
r

afterwards you have the normal interactive gdb prompt

EDIT:

here is an optimization for the truly lazy:

  1. save the script as .gdbinit in the working directory.
  2. Afterwards you simply run gdb as

    gdb

... and gdb automatically loads and executes the content of .gdbinit.