我安装bashdb
在使用 bash 4.3 的 fedora 21 上。我需要运行 using--debugger
因为我想$0
正确设置为脚本的名称而不是bashdb。
bash --debugger my.bash
但是脚本只是执行,没有调试会话。另一方面运行:
bash --debugger my.bash ""
工作正常。
我究竟做错了什么?
这是我认为在 bash 4.3 中引入的错误: Wed Feb 26 09:36:43 2014 -0500 Bash-4.3 distribution sources and documentation
添加的导致这种情况的代码是:
if (debugging_mode && locally_skip_execution == 0 && running_setuid == 0 && dollar_vars[1])
start_debugger ();
我已经发布了关于此的错误报告。请参阅http://lists.gnu.org/archive/html/bug-bash/2015-04/msg00183.html
上述线程中的简短故事是,虽然 bash 版本 4.3 到 4.3.33 有这个 bug,但在 4.3.33 之后的下一个版本(2015 年 4 月之后的某个时间),这个 bug 将被修复。
使用bash --debugger
时,调试器必须安装在 bash 期望的位置。尽管配置脚本试图解决这个问题,但很多时候它会出错。要查看bash认为应该安装调试器的位置,请运行:
strings /bin/bash | grep bashdb
在 Ubuntu 上,我得到的答案是:/usr/share/bashdb/bashdb-main.inc
. 所以bashdb预计会安装在/usr/share/bashdb
. 使用它,然后像这样运行配置:
/bin/bash ./configure -with-bashdb-main.inc=/usr/share/bashdb/bashdb-main.inc