如何访问.gdbinit和gdb内部的环境变量?

use*_*631 16 linux debugging gdb

我想在使用gdb进行调试时设置源代码的路径.我选择使用.gdbinit文件.

基本上,它包含一个命令:

directory="/path/to/src".
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够将该命令指定为:

directory="$SOURCESROOT/src"
Run Code Online (Sandbox Code Playgroud)

哪里SOURCESROOT是环境变量.并且,如果可能的话,也可以通过输入在gdb debuuging会话中做到这一点directory=$SOURCESROOT/folder.

基本上,我希望访问gdb(或.gdbinit内部)环境变量.

但不是debugee的环境(设置env等),而是gdb本身的环境(即我首先键入的bash提示符"gdb program").

虽然shell $SOURCESROOT在gdb会话中键入内容会显示环境变量的内容,但这是无用的,因为我无法输入:directory=shell $SOURCESROOT.

PS:任何人都找到了一个理想的设置Linux(Debian)下载带有"apt-get source"的源代码,用某种"apt-get update"utopic命令更新那些并安装它们以便gdb自动找到这些来源?

use*_*631 18

没关系,我发现如何使用Python脚本来做到这一点.

我的.gdbinit文件现在是:

python
import os
gdb.execute('directory' + os.environ['SOURCES'] + '/package_name/src')
end

show directories
Run Code Online (Sandbox Code Playgroud)


Fra*_*ace 8

(晚了6年!)

不要.gdbinit用于此目的。它不会扩展环境变量。相反,使用此命令行启动 gdb:

gdb --init-eval-command="set dir $SOURCESROOT/src"

(gdb) show dir
/path/to/src
Run Code Online (Sandbox Code Playgroud)

仅供参考,此技术可用于设置其他关键变量,例如

gdb --eval-command="set sysroot $SYSROOTDIR"
Run Code Online (Sandbox Code Playgroud)

哪个集sysrootsolib-absolute-prefixgdb

  • 嘿,非常感谢!非常感谢,而且永远不会太晚。 (2认同)