Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 488
Velkan Avatar asked Dec 18 '25 11:12

Velkan


1 Answers

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 <>
like image 52
pmod Avatar answered Dec 20 '25 03:12

pmod



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!