Skip to content

Instantly share code, notes, and snippets.

@compenguy
Created March 29, 2017 23:46
Show Gist options
  • Save compenguy/8421097fbbd2bb945739adef2f41897a to your computer and use it in GitHub Desktop.
Save compenguy/8421097fbbd2bb945739adef2f41897a to your computer and use it in GitHub Desktop.
Getting a stack trace in bash
function get_stack () {
STACK=""
local i message="${1:-""}"
local stack_size=${#FUNCNAME[@]}
# to avoid noise we start with 1 to skip the get_stack function
for (( i=1; i<$stack_size; i++ )); do
local func="${FUNCNAME[$i]}"
[ x$func = x ] && func=MAIN
local linen="${BASH_LINENO[$(( i - 1 ))]}"
local src="${BASH_SOURCE[$i]}"
[ x"$src" = x ] && src=non_file_source
STACK+=$'\n'" at: "$func" "$src" "$linen
done
STACK="${message}${STACK}"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment