Reputation: 7582
I've established a build process that makes binaries and then separates the debug info from them (build-ids are enabled).
The build can also generate the .gdbinit
files with the lines like set debug-file-directory <dir>
, so the debugger can find them (there are lots of executables and libraries in the project).
But when I run $ gdb myprogram
, gdb can't find the symbols. I have to do (gdb) file myprogram
to redo the search for the debug-symbols file. It seems that .gdbinit
is executed after opening myprogram
.
How to make it automatic?
Upvotes: 3
Views: 5342
Reputation: 10997
Basically, .gdbinit file is used to setup debugging environment (add aliases for long commands, load custom commands, setup print modes, etc. ), not a particular debugging session.
Taking a look at gdb startup order and considering that home .gdbinit works ok, it cannot be achieved with local .gdbinit file (order of operations should be set debug-file-directory, file). I think you can modify your build/debug process for using gdb wrapper script with gdb command script (the same as .gdbinit but call it start.gdb for example to avoid confusion):
gdb_x:
#!/bin/sh
gdb -x ./start.gdb "$@"
start.gdb:
# this file is generated for .. by ...
set debug-file-directory <>
set debug-file-directory <>
Or, as a workaround, if you can bare with the fact that commands will run twice:
gdb -x ./.gdbinit <>
which can be avoided with (and deserves again wrapper script):
gdb -iex "set auto-load local-gdbinit off" -x ./.gdbinit <>
Upvotes: 2