为什么GDB启动一个新shell以及如何禁用此行为?

Pau*_*aet 7 c gdb symbols

我正在弄清楚一个问题,从GDB启动应用程序会导致符号查找错误,但是从shell开始工作.

事实证明,无论何时从GDB内部启动程序,它都会启动一个新的shell,从而覆盖我在启动GDB之前设置的所有环境变量(如LD_LIBRARY_PATH).

这不是我想要的行为.有人可以解释这背后的理由,或者告诉我如何解决这个问题?

Emp*_*ian 5

我猜你无条件地设置LD_LIBRARY_PATH~/.cshrc等。因此,如果从shell提示符中执行以下操作:

export LD_LIBRARY_PATH=foo  # or for csh:
setenv LD_LIBRARY_PATH foo
$SHELL -c 'echo $LD_LIBRARY_PATH'
Run Code Online (Sandbox Code Playgroud)

结果是除了以外的东西foo。不要做那个

通常,这种情况发生在CSH用户身上,他们忽略了保护他们~/.cshrc免受非交互式shell攻击的能力。设置其BASH的BASH用户也可能发生这种情况BASH_ENV