# Exit with backtrace and error message # # Usage: die "Error message" die() { # Let us be a little sloppy with errors, because otherwise the final # invocation of `caller` below will cause the script to exit. set +e # Print our error message printf "\nBuilder called die: %b\n" "$*" printf "Backtrace:\n" # Print a backtrace. local frame=0 while caller $frame; do ((frame++)); done printf "\n" exit 1 }