Bash:
디버거 사용하기

어떻게:

Bash는 다른 언어들처럼 내장형 디버거가 없지만, set -x와 같은 내장 명령어를 사용하여 무슨 일이 일어나고 있는지 추적할 수 있습니다. 또는 업그레이드를 위해서, 코드를 단계별로 진행할 수 있는 적절한 디버거인 bashdb가 있습니다. 여기에 예시가 있습니다:

# set -x를 사용하여 디버깅하기
set -x
echo "디버깅 시작"
my_var="안녕, 디버깅 세계!"
echo $my_var
set +x

# bashdb 사용하기
# 패키지 관리자를 사용하여 bashdb 설치하기, 예: apt, yum, brew.
# my_script.sh라는 스크립트 디버깅하기:
bashdb my_script.sh

set -x를 사용하여 실행할 때의 출력:

+ echo '디버깅 시작'
디버깅 시작
+ my_var='안녕, 디버깅 세계!'
+ echo '안녕, 디버깅 세계!'
안녕, 디버깅 세계!
+ set +x

심층 분석

역사적으로, Bash 스크립트를 디버깅하면 코드에 echo 문을 남발하는 것을 의미했습니다. 그러나 그 다음에 set -x가 등장하여 수동 출력 없이 런타임 실행을 엿볼 수 있게 되었습니다. 그리고 더 많은 제어를 원하는 사람들을 위해 C/C++용 gdb 디버거에서 영감을 받은 bashdb 디버거가 등장했습니다.

대안에 관해서는, set 명령어(-x, -v, -e)를 넘어, 다른 옵션으로는 분석을 위해 출력을 파일로 리다이렉션하거나 ShellCheck과 같은 외부 도구를 사용하여 정적 분석을 하는 것이 포함됩니다.

구현 측면에서, set -x는 쉽습니다; 실행되는 명령과 그 인자들을 출력하는 네이티브 Bash 옵션입니다. 반면에, bashdb는 코드를 단계별로 진행하고, 중단점을 설정하고, 표현식을 평가하는 것과 같은 기능을 허용합니다 - 이는 좀 더 까다로운 버그에 맞서 싸울 수 있는 기회를 제공합니다.

참고 자료