110

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.

Ciro Santilli OurBigBook.com
  • 347,512
  • 102
  • 1,199
  • 985
orion elenzil
  • 4,484
  • 3
  • 37
  • 49

5 Answers5

156
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.

Community
  • 1
  • 1
Employed Russian
  • 199,314
  • 34
  • 295
  • 362
25

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.

  • hey thanks for the answer. that looks like just what i want except i don't get the gdb prompt, i get gdb being suspended and i'm back at the command line as if i'd typed "ctrl-z". if i "fg", then gdb resumes and the app runs. this is OS X. – orion elenzil Jan 25 '10 at 21:48
  • orion: mmmh - that's surprising to me. Works well with every UNIX flavor I am actually using (Linux, Solaris, AIX). What gdb version you are using? –  Feb 08 '10 at 22:06
  • i just re-verfied the behaviour of this - still exits me to the command line w/ gdb suspended.GNU gdb 6.3.50-20050815 (Apple version gdb-1518) (Sat Feb 12 02:52:12 UTC 2011). – orion elenzil Jun 20 '11 at 05:17
  • @orionelenzil No idea why, but if you put `fg` after the `r` line, it acts sanely – dbr Dec 19 '12 at 10:08
  • The `start` command provides a shortcut for `b` + `r`: https://stackoverflow.com/a/2119606/895245 – Ciro Santilli OurBigBook.com Sep 23 '18 at 10:55
20
(echo r ; cat) | gdb a.out

The cat allows you keep typing after gdb breaks.

cadabra
  • 288
  • 2
  • 7
9

start command

This command is another good option:

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

It is like run, but also sets a temporary breakpoint at main and stops there.

This temporary breakpoint is deactivated once it is hit.

starti

There is also a related starti which starts the program and stops at the very first instruction instead, see also: Stopping at the first machine code instruction in GDB

Great when you are doing some low level stuff.

Ciro Santilli OurBigBook.com
  • 347,512
  • 102
  • 1,199
  • 985
4

gdb -x <(echo run) --args $program $args

Darshana
  • 2,462
  • 6
  • 28
  • 54
Dan
  • 41
  • 2