【问题标题】:GDB loads unfindable script on shell startGDB 在 shell 启动时加载无法找到的脚本
【发布时间】:2019-04-03 16:08:49
【问题描述】:

在我的计算机上,当在 GDB 中启动一个 shell 时,它会给出一个非常标准的 shell(看起来像“bash-4.4$”)——忽略我的大部分环境变量。对我来说真正的问题是我无法调整 LD_LIBRARY_PATH 变量,因为这个原因。

更多关于 SO 的帖子建议检查 .bashrc 和 .profile,我这样做了。我什至创建了一个新用户,问题仍然存在。因此,GDB 会加载一些脚本,更改我的 PS1 并取消设置 LD_LIBRARY_PATH。但是,我不知道是哪个过程。由于某种原因,Root 没有这个问题。

这行得通:

delruej@delxps:~$ export LD_LIBRARY_PATH=Hello
delruej@delxps:~$ bash
delruej@delxps:~$ echo $LD_LIBRARY_PATH
Hello

但事实并非如此:

delruej@delxps:~$ export LD_LIBRARY_PATH=Hello
delruej@delxps:~$ gdb
(gdb) shell
bash-4.4$ echo $LD_LIBRARY_PATH


它应该是每个用户都加载的一些脚本,而不是root。

【问题讨论】:

    标签: c++ bash ubuntu gdb


    【解决方案1】:

    所以 GDB 加载了一些脚本,更改我的 PS1 并取消设置 LD_LIBRARY_PATH

    没有。 GDB 只是加载您的$SHELL,而您的$SHELL 出于某种原因取消设置这些环境变量。

    您应该查看$SHELL 的值,可能还有$ENV

    请注意:

    1. 使用LD_LIBRARY_PATH 一般是错误的;您应该努力构建您的程序,使它们不需要它。
    2. 可以使用(gdb) set env FOO bar 在 GDB 中设置任何环境变量(您不必从父 shell 继承它们)。

    【讨论】:

    • 1.它是一个测试程序,不是我写的; 2. 每次都未设置因此 GDB 会加载一些脚本,更改我的 PS1 并取消设置 LD_LIBRARY_PATH -> 我的意思是 shell 以不同于常规 shell 的方式执行某些脚本,因为常规 shell 保留 LD_LIBRARY_PATH。
    【解决方案2】:

    我清除了 GDB,删除了 /usr/share/gdb/,重新安装并解决了问题。

    【讨论】:

    • 著名的“重启”非解决方案。我想我们永远不会知道真正的问题是什么。
    猜你喜欢
    • 1970-01-01
    • 2013-05-30
    • 2014-05-04
    • 1970-01-01
    • 2015-08-11
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多