bash 디 버 깅 경험 치

4044 단어 Shell
bash 는 유 닉 스/리 눅 스 운영 체제 에서 가장 자주 사용 하 는 셸 중 하나 로 매우 유연 하 며 awk,c+와 결합 하여 매우 강하 다.
다음은 테스트 스 크 립 트 를 사용 하여 bash 디 버 깅 방법 을 설명 합 니 다.
test.sh
[plain] view plain copy print ?
#!/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-----------------" 
  • #!/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-----------------
    주석 을 맞 추 면 bash-x 는 기본적으로 일상 80%의 수 요 를 만족 시 킬 수 있 습 니 다.
    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
    14:    echo "----------------end-----------------"

    좋은 웹페이지 즐겨찾기