You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.3 KiB
52 lines
1.3 KiB
function blabla {
|
|
echo IN blabla OUT
|
|
}
|
|
|
|
function exit {
|
|
local error_code stack_lines stack_functions stack_sources
|
|
error_code=${1:-0}
|
|
|
|
stack_lines=("${BASH_LINENO[@]}")
|
|
stack_functions=("${FUNCNAME[@]}")
|
|
stack_sources=("${BASH_SOURCE[@]}")
|
|
|
|
unset stack_functions[0]
|
|
unset stack_sources[0]
|
|
unset stack_lines[-1]
|
|
if [[ $error_code > 0 ]]; then
|
|
printf "\nEXIT #${error_code} due to error at line ${stack_lines} : \n-----------------------------------------\n"
|
|
[[ -s /tmp/error ]] && echo -ne 'CAUSE:\t\t' && cat /tmp/error
|
|
echo -e "FUNCNAME:\t${stack_functions[@]}" >&2 # inner outer main
|
|
echo -e "BASH_SOURCE:\t${stack_sources[@]}" >&2
|
|
echo -e "BASH_LINENO:\t${stack_lines[@]}" >&2
|
|
trap - ERR TERM INT EXIT
|
|
builtin exit "${error_code}"
|
|
else
|
|
echo __REAL_SUCCESS
|
|
fi
|
|
}
|
|
|
|
function _backtrace_perform {
|
|
echo LAUNCH script...
|
|
export -f exit
|
|
export -f blabla
|
|
set -TEue
|
|
trap 'exit $?' ERR TERM INT EXIT
|
|
|
|
source=${BASH_SOURCE[-1]}
|
|
_BACKTRACE=true
|
|
export _BACKTRACE
|
|
|
|
echo call1 exec $source $*
|
|
bash -c "set -TEue; trap 'exit $?' ERR TERM INT EXIT; source $source $*" 3>&1 1>&2 2>&3 | tee /tmp/error
|
|
|
|
trap - ERR TERM INT EXIT
|
|
builtin exit
|
|
echo NOT VISIBLE
|
|
|
|
}
|
|
|
|
_BACKTRACE=${_BACKTRACE:-false}
|
|
echo _BACKTRACE=${_BACKTRACE}
|
|
${_BACKTRACE} && return
|
|
_backtrace_perform
|