i had gdb new version and then it all displayed already all params to funcs and stuff (once seen)
On Wed, Feb 2, 2022, 15:35 L A Walsh <b...@tlinx.org> wrote: > I was trying to find parameters to a function that gave an error, so > I 'turned on' (included my backtracing routine), which showed: > > ./24bc: line 46: printf: `txt=\nRed,': not a valid identifier > STOPPING execution @ "printf ${_:+-v $_} '\x1b[48;2;%s;%s;%sm' $1 $2 $3" > in "setBgColor()" at ./24bc #46 > called in setBackBlack() at ./24bc #56 > called in title() at ./24bc #74 > called in main() at ./24bc #81 > > ---- > I was all, 'rats, its not showing the params', I wondered why and looked > at the code, > and realized that while I can backtrace function, source line+file, I > didn't > know how to display the params that were used when the function was called. > > Is there, or maybe 'can there', be a BASH var like > FUNCPARMS[1]="(P1 P2 P3)" > > Of course it would be handy if bash could parse this w/o using an > intermediate var: > > echo "${${FUNCPARMS[@]}[1]}" => > # (tmp=${FUNCPARMS[@]} tmp=(P1 P2 P3) ) > # echo "${tmp[1]}" > P1 > > --- > But even without the enhanced parsing output, it would still > be useful if bash had & filled in the param vars. > > FUNCPARMS would parallel 'FUNCNAME', i.e. > FUNCPARMS[1] would hold the quoted array "()" PARMS for FUNCNAME[1]. > > FWIW, my primitive backtrace function (source or "include") follows: > > ---- > #!/bin/bash -u > > shopt -s expand_aliases > alias my='declare ' int='my -i ' > > backtrace () { > trap ERR > int level=0 > my cmd fn src ln > int iter=0 > while { > cmd=$BASH_COMMAND; fn=${FUNCNAME[level+1]:-} > src=${BASH_SOURCE[level+1]:-} ln=${BASH_LINENO[level]:-} > }; do > [[ $fn && $src && $ln ]] && { > if ((iter++==0)); then > printf 'STOPPING execution @ "%s" in "%s()" at %s #%s\n' "$cmd" > "$fn" "$src" "$ln" > else > printf ' called in %s() at %s #%s\n' "$fn" "$src" "$ln" > fi > level+=1 > continue; > } > exit 1 > done > } > set -o errtrace > trap backtrace ERR > trap backtrace QUIT > set -E > > > >