我已经建立了一个构建进程,该进程生成二进制文件,然后将调试信息与它们分开(启用了build-id)。
构建还可以使用类似realm.where(newuser.class).max("nid").intValue()+1
的行生成newuser
文件,因此调试器可以找到它们(项目中有许多可执行文件和库)。
但是当我运行.gdbinit
时,gdb找不到符号。我必须执行set debug-file-directory <dir>
重做搜索调试符号文件。打开$ gdb myprogram
后,(gdb) file myprogram
似乎已执行。
如何让它自动化?
答案 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 <>