diff --git a/src/mod/core.sh b/src/mod/core.sh index f293071..7a590f3 100644 --- a/src/mod/core.sh +++ b/src/mod/core.sh @@ -16,7 +16,21 @@ std::backtrace() { std::eprintln $'\033[4m'"Backtrace:" for i in "${!FUNCNAME[@]}"; do - std::eprintln " ${FUNCNAME[$i]} called at ${BASH_SOURCE[$i]}:${BASH_LINENO[$i - 1]}" + ! [ "$i" -eq 0 ] || continue + + std::eprintln " $i: ${FUNCNAME[$i]}" + + local src + src=$(realpath --relative-to "$PWD" -e "${BASH_SOURCE[$i]}") + if [ "${src:0:1}" != "." ]; then + src=./$src + fi + + if [ "${BASH_LINENO[$i - 1]}" -eq 0 ]; then + std::eprintln $'\033[0m'" at "$'\033[1;35m'"$src" + else + std::eprintln $'\033[0m'" at "$'\033[1;35m'"$src:${BASH_LINENO[$i - 1]}" + fi done }