Velkan
Velkan

Reputation: 7582

Search symbols again after setting debug-file-directory

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

Answers (1)

pmod
pmod

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

Related Questions