Ubuntu 15.04/18.04使用bashdb调试bash脚本

bash调试器bashdb,这是一个类似于GDB的调试工具,可以完成对shell脚本的断点设置,单步执行,变量观察等许多功能。

安装bashdb


$ sudo apt-get install bashdb

macOS下使用Homebrew安装,如下:

$ brew install bashdb

有两种启动调试的方式

1.直接在bash中传递参数的方式启动,适合需要读取$0参数为shell脚本的名字的采用这种方式启动。

$ bash --debugger xx.sh

2.使用bashdb直接启动脚本,适用于一般的脚本。

$ bashdb xx.sh

上面的操作对于ubuntu 18.04之前的版本都是可以的,但是目前的ubuntu 18.04是没有这个包的,只能手工编译安装,参考如下命令:

$ wget https://netix.dl.sourceforge.net/project/bashdb/bashdb/4.4-0.94/bashdb-4.4-0.94.tar.gz

#这个网站,国内用户下载非常慢,可以本站下载
#$ wget https://www.mobibrw.com/wp-content/uploads/2016/02/bashdb-4.4-0.94.tar.gz

$ tar -xvf bashdb-*.tar.gz

$ cd bashdb-*/

$ ./configure

$ make

$ sudo make install

常用的调试命令


  1. 列出代码和查询代码类:
    l 列出当前行以下的10行
    - 列出正在执行的代码行的前面10行
    . 回到正在执行的代码行
    w 列出正在执行的代码行前后的代码
    /pat/ 向后搜索pat
  2. Debug控制类:
    h 帮助
    help 命令 得到命令的具体信息
    q 退出bashdb
    x 算数表达式 计算算数表达式的值,并显示出来
    !!空格Shell命令 参数 执行shell命令
    使用bashdb进行debug的常用命令(cont.)
  3. 控制脚本执行类:
    n 执行下一条语句,遇到函数,不进入函数里面执行,将函数当作黑盒
    s n 单步执行n次,遇到函数进入函数里面
    b 行号n 在行号n处设置断点
    d 行号n 撤销行号n处的断点
    c 行号n 一直执行到行号n处
    R 重新启动
    Finish 执行到程序最后
    cond n expr 条件断点

参考链接


发布者

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注