【问题标题】:How to access environment variables inside .gdbinit and inside gdb itself?如何访问 .gdbinit 内部和 gdb 本身内部的环境变量?
【发布时间】:2012-03-21 23:11:02
【问题描述】:

我希望在使用 gdb 进行调试时设置源代码的路径。我选择使用 .gdbinit 文件来做到这一点。

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

directory="/path/to/src".

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

directory="$SOURCESROOT/src"

其中SOURCESROOT 是一个环境变量。如果可能的话,也可以在 gdb 调试会话中执行此操作,方法是输入 directory=$SOURCESROOT/folder

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

但不是被调试者的环境(设置 env 等),而是 gdb 本身的环境(即,我首先输入“gdb 程序”的 bash 提示符)。

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

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

【问题讨论】:

    标签: linux debugging gdb


    【解决方案1】:

    没关系,我找到了使用 Python 脚本的方法。

    我的.gdbinit 文件现在是:

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

    【讨论】:

      【解决方案2】:

      (晚了 6 年!)

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

      gdb --init-eval-command="set dir $SOURCESROOT/src"
      
      (gdb) show dir
      /path/to/src
      

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

      gdb --eval-command="set sysroot $SYSROOTDIR"
      

      gdb 中设置sysrootsolib-absolute-prefix

      【讨论】:

      • 嘿,非常感谢!非常感谢,永远不会太晚。
      【解决方案3】:

      如果你不想涉及 python,那么这可以工作吗?

      "显示环境[变量名] 打印环境变量 varname 的值,以便在程序启动时提供给它。如果您不提供 varname,请打印要提供给程序的所有环境变量的名称和值。环境可以缩写为 env。”

      ftp://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_19.html

      也许它们也可以用于条件:

      https://www.adacore.com/gems/gem-119-gdb-scripting-part-1

      【讨论】:

        【解决方案4】:

        就我而言,我想将全局历史设置为共同的$HOME/.gdbinit,所以我使用了

        set history filename ~/.gdb_history
        

        而不是

        set history filename $HOME/.gdb_history
        

        【讨论】:

          猜你喜欢
          • 2012-05-11
          • 1970-01-01
          • 2022-08-04
          • 2011-09-25
          • 2013-03-13
          • 2016-08-12
          • 1970-01-01
          • 2015-04-06
          • 2017-09-22
          相关资源
          最近更新 更多