From 1a11e63e1c4da688b31d4418f84f25a18a5870dc Mon Sep 17 00:00:00 2001 From: Pawel Wodkowski Date: Mon, 20 Feb 2017 20:32:49 +0100 Subject: [PATCH] autotest_common.sh: show backtrace when something fail To aid debuging print file, line, function and code snipet of each stack frame in script when error is generated. Change-Id: Ib720b90049e7102a2e11755c6f10c016634efab9 Signed-off-by: Pawel Wodkowski --- scripts/autotest_common.sh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/scripts/autotest_common.sh b/scripts/autotest_common.sh index 7bc121cb4..149c50f30 100755 --- a/scripts/autotest_common.sh +++ b/scripts/autotest_common.sh @@ -196,3 +196,26 @@ function run_test() { echo "************************************" set -x } + +function print_backtrace() { + set +x + echo "========== Backtrace start: ==========" + echo "" + for i in $(seq 1 $((${#FUNCNAME[@]} - 1))); do + local func="${FUNCNAME[$i]}" + local line_nr="${BASH_LINENO[$((i - 1))]}" + local src="${BASH_SOURCE[$i]/#$rootdir/.}" + echo "in $src:$line_nr -> $func()" + echo " ..." + nl -w 4 -ba -nln $src | grep -B 5 -A 5 "^$line_nr" | \ + sed "s/^/ /g" | sed "s/^ $line_nr/=> $line_nr/g" + echo " ..." + done + echo "" + echo "========== Backtrace end ==========" + set -x + return 0 +} + +set -o errtrace +trap "trap - ERR; print_backtrace >&2" ERR