每次我尝试运行GDB什么,我会见了以下错误消息:GDB使我的SHELL复位到当前的可执行
Error: No such file or directory
During startup program exited with code 127.
在这里搜索的时候,我发现,这可能发生当SHELL变量未正确设置时,并且实际上在运行GDB解决当前会话的问题之前正在运行export SHELL=/bin/bash --login
。
但是,尽管echo $SHELL
已经吐出了所需的值,如果我看的命令GDB试图执行接近时,它通常采取以下形式:
/path/to/mybin -c exec /path/to/mybin --my --opts
,而不是
$SHELL -c exec /path/to/mybin --my --opts
也就是说,GDB莫名其妙重置SHELL指向我传递任何可执行它在开始运行之前。 (我使用格式gdb --args /path/to/mybin --my --opts
来启动GDB。)在运行之前和之后,SHELL具有正确的值。如果我尝试在一行中调试三个不同的可执行文件,那么这三个可执行文件中的每一个都将被用作它自己的shell,这显然会导致失败。 如果我甚至一次运行export SHELL=(acceptable shell)
,它将在本次会议剩余时间内正常工作。
我的shell dotfile(.bashrc,.profile等)没有任何引用或修改SHELL变量。这种行为对我来说似乎完全不可理解。有没有人有一个想法可能会发生什么?
我在Ubuntu 14.04的bash-4.3.11中使用gdb-7.7.1。
编辑:我错了一个重要的细节。正在运行export SHELL=/bin/bash --login
实际上不能纠正它。如果我这样做,同样的问题仍然存在。 (这也是我的壳,我看看,如果我进入show env SHELL
时gdb
是行不通的。但是,设置export SHELL=/bin/bash
确实纠正问题,所以登录shell是有点问题,我猜的默认值。
当事情工作不正常,'(gdb)显示env SHELL'显示什么? –
我刚编辑了我原来的问题。 'show env SHELL'打印'/ bin/bash --login' – xanderflood