我希望在使用gdb进行调试时设置源代码的路径。我选择使用.gdbinit文件。
基本上,它包含一个命令:
directory="/path/to/src".
但是,我希望能够将该命令指定为:
directory="$SOURCESROOT/src"
其中SOURCESROOT
是一个环境变量。并且,如果可能的话,也可以通过输入directory=$SOURCESROOT/folder
在gdb debuuging会话中执行此操作。
基本上,我希望访问gdb(或.gdbinit内部)环境变量。
但不是debugee的环境(设置env等),而是gdb本身的环境(即我首先输入的bash提示符“gdb program”)。
虽然在gdb会话中键入shell $SOURCESROOT
会显示环境变量的内容,但这是无用的,因为我无法输入:directory=shell $SOURCESROOT
。
答案 0 :(得分:17)
没关系,我发现如何使用Python脚本来完成它。
我的.gdbinit
文件现在是:
python
import os
gdb.execute('directory' + os.environ['SOURCES'] + '/package_name/src')
end
show directories
答案 1 :(得分:1)
如果你不想涉及python,那么这可行吗?
“显示环境[varname] 打印环境变量varname的值,以便在程序启动时提供给它。如果不提供varname,则打印要提供给程序的所有环境变量的名称和值。您可以将环境缩写为env。“
ftp://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_19.html
也许他们也可以用于条件:
答案 2 :(得分:1)
(已晚6年了!)
请勿将.gdbinit
用于此目的。它不会扩展env vars。而是使用此命令行启动gdb:
gdb --init-eval-command="set dir $SOURCESROOT/src"
(gdb) show dir
/path/to/src
仅供参考,这项技术可用于设定其他关键变量,例如
gdb --eval-command="set sysroot $SYSROOTDIR"
在sysroot
solib-absolute-prefix
和gdb
答案 3 :(得分:0)
在我的情况下,我想将全局历史设置为公用$HOME/.gdbinit
,所以我使用了
set history filename ~/.gdb_history
代替
set history filename $HOME/.gdb_history