|
|
@ -0,0 +1,52 @@ |
|
|
|
|
|
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 |