bash
调试器bashdb
,这是一个类似于GDB
的调试工具,可以完成对shell
脚本的断点设置,单步执行,变量观察等许多功能。
安装bashdb
1 |
$ sudo apt-get install bashdb |
macOS下使用Homebrew安装,如下:
1 |
$ brew install bashdb |
有两种启动调试的方式
1.直接在bash
中传递参数的方式启动,适合需要读取$0
参数为shell脚本的名字的采用这种方式启动。
1 |
$ bash --debugger xx.sh |
2.使用bashdb直接启动脚本,适用于一般的脚本。
1 |
$ bashdb xx.sh |
上面的操作对于ubuntu 18.04
之前的版本都是可以的,但是目前的ubuntu 18.04
是没有这个包的,只能手工编译安装,参考如下命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ 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 |
常用的调试命令
- 列出代码和查询代码类:
l
列出当前行以下的10行
-
列出正在执行的代码行的前面10行
.
回到正在执行的代码行
w
列出正在执行的代码行前后的代码
/pat/
向后搜索pat - Debug控制类:
h
帮助
help
命令 得到命令的具体信息
q
退出bashdb
x
算数表达式 计算算数表达式的值,并显示出来
!!空格Shell命令 参数
执行shell命令
使用bashdb进行debug的常用命令(cont.) - 控制脚本执行类:
n
执行下一条语句,遇到函数,不进入函数里面执行,将函数当作黑盒
s n
单步执行n次,遇到函数进入函数里面
b 行号n
在行号n处设置断点
d 行号n
撤销行号n处的断点
c 行号n
一直执行到行号n处
R
重新启动
Finish
执行到程序最后
cond n expr
条件断点