style: improve backtrace format (rust-like)
This commit is contained in:
+15
-1
@@ -16,7 +16,21 @@ std::backtrace() {
|
|||||||
std::eprintln $'\033[4m'"Backtrace:"
|
std::eprintln $'\033[4m'"Backtrace:"
|
||||||
|
|
||||||
for i in "${!FUNCNAME[@]}"; do
|
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
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user