~/.gdbinit
is run before the object file in the command line is processed.
Although it requires a bit of setup, saving your breakpoints as a gdb script that can be auto-loaded might be the cleanest way to do this.
First, create a directory to hold the scripts, and add the appropriate lines to ~/.gdbinit
.
~/devel$ mkdir ~/gdbscripts
~/devel$ cat ~/.gdbinit
add-auto-load-safe-path /home/mp/gdbscripts
add-auto-load-scripts-directory /home/mp/gdbscripts
set debug auto-load on
We'll remove the last line after things are working.
Now let's see where gdb looks for its script files.
~/devel$ gdb -q sigw
Reading symbols from sigw...done.
auto-load: Attempted file "/home/mp/devel/sigw-gdb.gdb" does not exist.
auto-load: Expanded $-variables to "/usr/lib/debug:/usr/share/gdb/auto-load:/home/mp/gdbscripts".
auto-load: Searching 'set auto-load scripts-directory' path "$debugdir:$datadir/auto-load:/home/mp/gdbscripts".
auto-load: Attempted file "/usr/lib/debug/home/mp/devel/sigw-gdb.gdb" does not exist.
auto-load: Attempted file "/usr/share/gdb/auto-load/home/mp/devel/sigw-gdb.gdb" does not exist.
auto-load: Attempted file "/home/mp/gdbscripts/home/mp/devel/sigw-gdb.gdb" does not exist.
auto-load: Attempted file "/home/mp/devel/sigw-gdb.py" does not exist.
auto-load: Expanded $-variables to "/usr/lib/debug:/usr/share/gdb/auto-load:/home/mp/gdbscripts".
auto-load: Searching 'set auto-load scripts-directory' path "$debugdir:$datadir/auto-load:/home/mp/gdbscripts".
auto-load: Attempted file "/usr/lib/debug/home/mp/devel/sigw-gdb.py" does not exist.
auto-load: Attempted file "/usr/share/gdb/auto-load/home/mp/devel/sigw-gdb.py" does not exist.
auto-load: Attempted file "/home/mp/gdbscripts/home/mp/devel/sigw-gdb.py" does not exist.
There are a couple good candidates there, some of which are only writable by root and some of which you'd need to add to your safe-path. Let's use ~/gdbscripts/$PWD/sigw-gdb.gdb
.
(gdb) shell mkdir -p ~/gdbscripts/$PWD
(gdb) b main
Breakpoint 1 at 0x84f: file sigw.c, line 15.
(gdb) save breakpoints ~/gdbscripts/$PWD/sigw-gdb.gdb
Unable to open file '/home/mp/gdbscripts/$PWD/sigw-gdb.gdb' for saving (No such file or directory)
It looks like the save
command expands ~
but doesn't expand environment variables. We'll have to use the full path.
(gdb) save breakpoints ~/gdbscripts/home/mp/devel/sigw-gdb.gdb
Saved to file '/home/mp/gdbscripts/home/mp/devel/sigw-gdb.gdb'.
Test it out.
(gdb) quit
~/devel$ gdb -q sigw
Reading symbols from sigw...done.
...
auto-load: Matching file "/home/mp/gdbscripts/home/mp/devel/sigw-gdb.gdb" to pattern "/home/mp/gdbscripts"
auto-load: Matched - file "/home/mp/gdbscripts" to pattern "/home/mp/gdbscripts".
auto-load: File "/home/mp/gdbscripts/home/mp/devel/sigw-gdb.gdb" matches directory "/home/mp/gdbscripts".
Breakpoint 1 at 0x84f: file sigw.c, line 15.
...
(gdb) i b
Num Type Disp Enb Address What
1 breakpoint keep y 0x000000000000084f in main at sigw.c:15