簡體   English   中英

GDB不斷將SHELL重置為當前可執行文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM