bash 기능을 디버깅/추적하는 방법은 무엇입니까?

bash 기능을 디버깅/추적하는 방법은 무엇입니까?

myscript.sh내부에 많은 기능이 있는 bash 스크립트가 있습니다 . 하나의 기능을 실행하려면 다음과 같이 작성합니다.

source myscript.sh; myfunction

그러한 기능을 어떻게 디버깅합니까?

답변1

디버깅하려는 섹션 앞에 다음 줄을 추가하기만 하면 됩니다.

set -v -x -e

비활성화합니다.

set +v +x +e

답변2

스크립트에서 디버깅을 활성화하고 functrace.

set -x
set -o functrace

답변3

Bash에서도 다음을 사용할 수 있어야 합니다.

$ set -xT

이는 기능 추적을 가능하게 하고

$ set +xT

비활성화합니다.

또한 게시된 다른 답변을 참조하면 구문에 대한 스크립트/셸 명령 세트를 확인하지 않는 한 디버깅(상세 모드)에 -v를 사용하지 않는 것이 좋습니다. 때때로 유용한 또 다른 (일반적인) 솔루션은 -n와 함께 옵션을 사용하는 것입니다 -x. 이것은 실제로 명령 실행의 마지막 단계를 수행하지 않고 스크립트/명령을 "실행"합니다. 이를 통해 원치 않는 대혼란을 일으키지 않고 쉘 확장 등에서 어려운 오류를 포착할 수 있는 경우가 많습니다.

관련 정보