# Copyright (c) 2012 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # Code used for bash stack dumps included by common.sh when we're in # bash mode. # Output a backtrace all the way back to the raw invocation, suppressing # only the _dump_trace frame itself. _dump_trace() { local j n p func src line args p=${#BASH_ARGV[@]} for (( n = ${#FUNCNAME[@]}; n > 1; n-- )); do func=${FUNCNAME[${n} - 1]} src=${BASH_SOURCE[${n}]##*/} line=${BASH_LINENO[${n} - 1]} args= if [[ -z ${BASH_ARGC[${n} -1]} ]]; then args='(args unknown, no debug available)' else for (( j = 0 ; j < ${BASH_ARGC[${n} -1]} ; ++j )); do args="${args:+${args} }'${BASH_ARGV[$(( p - j - 1 ))]}'" done ! (( p -= ${BASH_ARGC[${n} - 1]} )) fi if [[ $n == ${#FUNCNAME[@]} ]]; then error "script called: ${0##/*} ${args}" error "Backtrace: (most recent call is last)" else error "$(printf ' file %s, line %s, called: %s %s' \ "${src}" "${line}" "${func}" "${args}")" fi done }