linux系統中shell腳本的調試排錯debug

1、bashdb 安裝
一、下載
先肯定你的bash 版本
bash --version
If your version of bash is 4.3 or higher, use folder 4.3-0-91
If your version of bash is 4.2 or higher, use folder 4.2-0.8
If your version of bash is 4.1 or higher but less than 4.2 use folder 4.1-0.5
If your version of bash is 4.0 or higher but less than 4.1 use folder 4.0-0.4
If your version of bash is 3.1 or higher and less than 4.0, use folder 3.1-0.09.
If your version of bash is 3.0 or higher but less than 3.1, use the folder 3.00-0.05.
wget https://sourceforge.net/projects ... shdb-4.1-0.5.tar.gzbash

 


二、編譯
#tar zxvf  bashdb-4.1-0.5.tar.gz
#cd bashdb-4.1-0.5
#./configure
#make && make install

----------------------------------
2、調試使用


如下使用一個測試腳原本說明使用bash調試的方法
test.sh

[plain][url=]view plain[/url][url=]copy[/url]

less

  • #!/bin/bash  
  • echo "----------------begin-----------------"  
  • awk '{sum+=1} END{print sum}' test.sh  
  • MAX=3  
  • for ((i = 0; i < MAX; i++))  
  • do  
  •         loaddate=`date -d"-$i day" +%Y-%m-%d`  
  •         echo $loaddate  
  • done  
  • echo "----------------end-----------------"  



1. 使用bash -x工具

bash -x打印出腳本執行過程當中的全部語句
like:
測試

$ bash -x test.sh 
+ echo ----------------begin-----------------
----------------begin-----------------
+ awk '{sum+=1} END{print sum}' test.sh
14
+ MAX=3
+ (( i = 0 ))
+ (( i < MAX ))
++ date '-d-0 day' +%Y-%m-%d
+ loaddate=2013-03-05
+ echo 2013-03-05
2013-03-05
+ (( i++ ))
+ (( i < MAX ))
++ date '-d-1 day' +%Y-%m-%d
+ loaddate=2013-03-04
+ echo 2013-03-04
2013-03-04
+ (( i++ ))
+ (( i < MAX ))
++ date '-d-2 day' +%Y-%m-%d
+ loaddate=2013-03-03
+ echo 2013-03-03
2013-03-03
+ (( i++ ))
+ (( i < MAX ))
+ echo ----------------end-----------------
----------------end-----------------

url

配合上註釋,bash -x基本能夠知足平常80%的需求

spa

2. set 有的時候,咱們的腳本很是複雜,使用bash -x獲得的輸出太多,很難找到須要的信息
set 能夠進行局部調試,在須要調試的代碼以前加上「set -x」,須要調試的代碼以後加上「set +x」便可
like:
修改test.sh:
....
set -x
awk '{sum+=1} END{print sum}' test.sh
set +x
.....
運行:
----------------begin-----------------
+ awk '{sum+=1} END{print sum}' test.sh
16
+ set +x
2013-03-05
2013-03-04
2013-03-03
----------------end-----------------


3. 使用bash調試工具bashdb(Bash Debugger)bashdb是一個類GDB的調試工具,使用GDB的同窗使用bashdb基本無障礙
bashdb能夠運行斷點設置、變量查看等常見調試操做
bashdb須要單獨安裝
使用以下:
$ bashdb --debug test.sh            
bash debugger, bashdb, release 4.2-0.8


Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 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.


(/home/work/code/test.sh:3):
3:      echo "----------------begin-----------------"
bashdb<0> n  #下一步
----------------begin-----------------
(/home/work/code/test.sh:5):
5:      awk '{sum+=1} END{print sum}' test.sh
bashdb<1> l #列出上下共10行代碼
  1:    #!/bin/bash
  2:    
  3:    echo "----------------begin-----------------"
  4:    
  5: => awk '{sum+=1} END{print sum}' test.sh
  6:    
  7:    MAX=3
  8:    for ((i = 0; i < MAX; i++))
  9:    do
10:            loaddate=`date -d"-$i day" +%Y-%m-%d`
bashdb<2> b 10 #第10行設置斷點
Breakpoint 1 set in file /home/work/code/test.sh, line 10.
bashdb<3> c #繼續運行
14
Breakpoint 1 hit (1 times).
(/home/work/code/test.sh:10):
10:             loaddate=`date -d"-$i day" +%Y-%m-%d`
bashdb<4> print $i #打印變量值
0.net

相關文章
相關標籤/搜索