[英]GDB keeps resetting my SHELL to the current executable
每當我嘗試在GDB中運行任何內容時,都會遇到以下錯誤消息:
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的值正確。 如果我嘗試連續調試三個不同的可執行文件,則這三個可執行文件中的每一個都將用作其自身的外殼,顯然會產生故障。 如果我什至一次運行 export SHELL=(acceptable shell)
,它將在剩余的會話中正常工作。
我的Shell點文件(.bashrc,.profile等)均未對SHELL變量進行任何引用或修改。 這種行為對我來說似乎是完全不可理解的。 有誰知道可能會發生什么?
我在Ubuntu 14.04的bash-4.3.11中使用gdb-7.7.1。
編輯:我錯了一個重要的細節。 運行export SHELL=/bin/bash --login
實際上不能糾正它。 如果我這樣做,同樣的問題仍然存在。 (這也是我的Shell中的默認值,當gdb
無法正常運行時,我輸入show env SHELL
看到該值。但是,設置export SHELL=/bin/bash
確實可以解決此問題,因此登錄shell可能是該問題,我猜。
問題幾乎可以肯定是您的~/.bashrc
但是很難從您的描述中猜測出它是什么。
第1步:
mv ~/.bashrc ~/.bashrc.save.20170411
注銷並重新登錄,以確保GDB正常運行
第2步:
將.bashrc.save.20170411的部分復制到〜/ .bashrc,並重復注銷/登錄周期,直到GDB再次停止工作。
第三步:
現在您知道零件正在引起麻煩,如果您仍然不明白為什么.bashrc
塊有問題,可以提出一個更好的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.