设置debug-file-directory后再次搜索符号

时间:2016-03-17 20:04:40

标签: linux debugging gdb

我已经建立了一个构建进程,该进程生成二进制文件,然后将调试信息与它们分开(启用了build-id)。

构建还可以使用类似realm.where(newuser.class).max("nid").intValue()+1的行生成newuser文件,因此调试器可以找到它们(项目中有许多可执行文件和库)。

但是当我运行.gdbinit时,gdb找不到符号。我必须执行set debug-file-directory <dir>重做搜索调试符号文件。打开$ gdb myprogram后,(gdb) file myprogram似乎已执行。

如何让它自动化?

1 个答案:

答案 0 :(得分:2)

基本上, .gdbinit 文件用于设置调试环境(为长命令添加别名,加载自定义命令,设置打印模式等),而不是特定的调试会话

看一下gdb startup order并考虑到主 .gdbinit 工作正常,使用本地 .gdbinit 文件无法实现(操作顺序应该是设置debug-file-directory 文件)。我认为你可以修改你的构建/调试过程,使用gdb包装脚本和gdb命令脚本(与.gdbinit相同,但为了避免混淆,可以将其命名为start.gdb):

gdb_x:
#!/bin/sh
gdb -x ./start.gdb "$@"

start.gdb:
# this file is generated for .. by ...
set debug-file-directory <>
set debug-file-directory <>

或者,作为一种解决方法,如果您可以发现命令将运行两次这一事实:

gdb -x ./.gdbinit <>

可以避免(并且值得再次使用包装脚本):

gdb -iex "set auto-load local-gdbinit off" -x ./.gdbinit <>