bash是Unix/Linux操作系统最常用的shell之一,bash脚本经常用于编写批处理工具。
一般地,编写bash脚本时,也需要进行debug,通常会加一些print或者echo进行脚本调试,调试结束后还需要删除这些调试代码。
实际上,linux环境下也有类似gdb的工具用于调试bash脚本。这其中,bashdb相对来说更易于使用,使用方法也十分类似gdb。
bashdb开源,基于GLPv2协议。
https://sourceforge.net/projects/bashdb/files/bashdb/
需要注意的是,不同版本的bashdb对bash版本有要求,bashdb 5.0以上版本要求安装环境的bash版本也是5.0以上版本。
[root@node29 ~]# bash --version GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu) Copyright (C) 2011 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
本文以bashdb-4.4-1.0.1版本为例,其它版本类似。
[root@node29 ~]# tar -xf bashdb-4.4-1.0.1.tar.bz2 [root@node29 ~]# cd bashdb-4.4-1.0.1 [root@node29 bashdb-4.4-1.0.1]# ./configure [root@node29 bashdb-4.4-1.0.1]# make [root@node29 bashdb-4.4-1.0.1]# make install [root@node29 bashdb-4.4-1.0.1]# bashdb --version bashdb, release 4.4-1.0.1
以下以一个简单调试为例,演示bashdb使用方法,详细内容请参考bashdb用户手册。
[root@node29 CORED]# bashdb --debug /root/tools.sh bash debugger, bashdb, release 4.4-1.0.1 Copyright 2002-2004, 2006-2012, 2014, 2016-2018 Rocky Bernstein This is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Reading /root/tools.sh done. (/root/tools.sh:11): 11: LOG_DIR="./tools_log" bashdb<0> b 1095 Breakpoint 1 set in file /root/tools.sh, line 1095. bashdb<1> c Breakpoint 1 hit (1 times). (/root/tools.sh:1095): 1095: func_sel="$1" bashdb<2> n (/root/tools.sh:1098): 1098: lioc_dmc_prep bashdb<3> print $func_sel 1 bashdb<4> q bashdb: That's all, folks...
如果想要进一步使用IDE调试bash脚本,可以在图形界面下,安装DDD。
详情参考:http://www.gnu.org/software/ddd/