bash snippet: dumping function call trace
Posted on Mon 18 July 2011 in Hacks
Uno snippet di codice bash utile nel debugging di script.
#@.. function:: __cm_exit_error([text],[...])
#@
#@ Stampa la stringa passata in stderr ed esce
#@ Se è impostata la variabile __cm_debug stampa lo stack di chiamata delle funzioni
#@
#@ :param text: la stringa da stampare
#@ :type text: String
#@
__cm_exit_error()
{
echo "Error in ${FUNCNAME[1]}:${BASH_LINENO[0]}: $*" 1>&2
local i=0
[ $__cm_debug ] && while [ $i -lt ${#FUNCNAME} ]; do
[ "${FUNCNAME[$i]}" == "main" ] && break
echo "${BASH_SOURCE[$i]}::${FUNCNAME[$i + 1]}::${BASH_LINENO[$i]}" 1>&2
i=$(expr $i + 1)
done
exit 1
}