Skip to content

Instantly share code, notes, and snippets.

@zukko78
Forked from ahendrix/gist:7030300
Created October 3, 2020 20:04
Show Gist options
  • Save zukko78/56d0a27ed327eb64d8b4d33f01bd189c to your computer and use it in GitHub Desktop.
Save zukko78/56d0a27ed327eb64d8b4d33f01bd189c to your computer and use it in GitHub Desktop.
bash stacktrace
function errexit() {
local err=$?
set +o xtrace
local code="${1:-1}"
echo "Error in ${BASH_SOURCE[1]}:${BASH_LINENO[0]}. '${BASH_COMMAND}' exited with status $err"
# Print out the stack trace described by $function_stack
if [ ${#FUNCNAME[@]} -gt 2 ]
then
echo "Call tree:"
for ((i=1;i<${#FUNCNAME[@]}-1;i++))
do
echo " $i: ${BASH_SOURCE[$i+1]}:${BASH_LINENO[$i]} ${FUNCNAME[$i]}(...)"
done
fi
echo "Exiting with status ${code}"
exit "${code}"
}
# trap ERR to provide an error handler whenever a command exits nonzero
# this is a more verbose version of set -o errexit
trap 'errexit' ERR
# setting errtrace allows our ERR trap handler to be propagated to functions,
# expansions and subshells
set -o errtrace
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment