|
|
@ -170,17 +170,18 @@ function on_error { |
|
|
|
|
|
|
|
|
elif ! is_true "$CHILD_PROCESS"; then |
|
|
elif ! is_true "$CHILD_PROCESS"; then |
|
|
# in main process only, not from children! |
|
|
# in main process only, not from children! |
|
|
local regex2 |
|
|
|
|
|
|
|
|
local regex2 source lineno funcname |
|
|
last_error="${tmp_error[-1]}" |
|
|
last_error="${tmp_error[-1]}" |
|
|
regex2='^[[:space:]]+miaou_trace: source=(.*) lineno=(.*) funcname=(.*)$' |
|
|
regex2='^[[:space:]]+miaou_trace: source=(.*) lineno=(.*) funcname=(.*)$' |
|
|
if [[ "$last_error" =~ $regex2 ]]; then |
|
|
if [[ "$last_error" =~ $regex2 ]]; then |
|
|
miaou_debug "<miaou_trace>" |
|
|
miaou_debug "<miaou_trace>" |
|
|
trace_source="${BASH_REMATCH[1]}" |
|
|
|
|
|
trace_lineno="${BASH_REMATCH[2]}" |
|
|
|
|
|
trace_funcname="${BASH_REMATCH[3]}" |
|
|
|
|
|
extra_source=("$trace_source") |
|
|
|
|
|
extra_lineno=("$trace_lineno") |
|
|
|
|
|
extra_funcname=("$trace_funcname") |
|
|
|
|
|
|
|
|
source="${BASH_REMATCH[1]}" |
|
|
|
|
|
lineno="${BASH_REMATCH[2]}" |
|
|
|
|
|
funcname="${BASH_REMATCH[3]}" |
|
|
|
|
|
[[ "$funcname" == '<main>' ]] && funcname="$funcname (hint: prefer source than child process)" |
|
|
|
|
|
extra_source=("$source") |
|
|
|
|
|
extra_lineno=("$lineno") |
|
|
|
|
|
extra_funcname=("$funcname") |
|
|
# miaou_debug "<miaou_trace found_first source=${extra_source} lineno=${extra_lineno} funcname=${extra_funcname}/>" |
|
|
# miaou_debug "<miaou_trace found_first source=${extra_source} lineno=${extra_lineno} funcname=${extra_funcname}/>" |
|
|
# go backward |
|
|
# go backward |
|
|
for ((i = ${#tmp_error[@]} - 2; i >= 0; i--)); do |
|
|
for ((i = ${#tmp_error[@]} - 2; i >= 0; i--)); do |
|
|
@ -190,6 +191,7 @@ function on_error { |
|
|
source="${BASH_REMATCH[1]}" |
|
|
source="${BASH_REMATCH[1]}" |
|
|
lineno="${BASH_REMATCH[2]}" |
|
|
lineno="${BASH_REMATCH[2]}" |
|
|
funcname="${BASH_REMATCH[3]}" |
|
|
funcname="${BASH_REMATCH[3]}" |
|
|
|
|
|
[[ "$funcname" == '<main>' ]] && funcname="$funcname (hint: prefer source than child process)" |
|
|
extra_source=("$source" "${extra_source[@]}") |
|
|
extra_source=("$source" "${extra_source[@]}") |
|
|
extra_lineno=("$lineno" "${extra_lineno[@]}") |
|
|
extra_lineno=("$lineno" "${extra_lineno[@]}") |
|
|
extra_funcname=("$funcname" "${extra_funcname[@]}") |
|
|
extra_funcname=("$funcname" "${extra_funcname[@]}") |
|
|
|