X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=debug.sh;h=4c4f4fd696e15a42969b083a16c1fe28ae5f097c;hb=97bcab28825fde3e717ac5489b0f3f19e5e3f5db;hp=12772c22e09d8cc8fd535b12d6da647478bfbc6a;hpb=8877355de65c4ae42782bd1f9ca33dbe2b5ce653;p=rrq%2Frrqforth.git diff --git a/debug.sh b/debug.sh index 12772c2..4c4f4fd 100755 --- a/debug.sh +++ b/debug.sh @@ -2,10 +2,27 @@ PFX='0x[0-9a-f]* rrqforth.asm:[0-9]*[ ]*' + grep "${PFX}do" rrqforth.map | sed 's/ .*//;s/^/break */' > gdbinit -NBR=( $(eval "echo {1..$(wc -l < gdbinit)}") ) -for I in ${NBR[@]} ; do echo disable $I ; done >> gdbinit +NBR=$(wc -l < gdbinit) + +I=1 +while [ $I -lt $NBR ] ; do echo disable $I ; I=$((I+1)) ; done >> gdbinit + +RET=( $(grep -w ret rrqforth.map | sed 's/ .*//') ) +echo "break *${RET[0]}" >> gdbinit +# ;; rax = cfa of called word +# ;; rsi = cell* of next forth word +# ;; [$rsp] = from where the call was + +cat <> gdbinit +commands $((NBR+1)) +print (void*) \$rsp +print (void*) \$rsi +print (char*)((*((void**)(*((void**)\$rsi)-16)))+32) +end +EOF DS="$(grep "${PFX}DS_TOP:" rrqforth.map | sed 's/ .*//')" RS="$(grep "${PFX}RS_TOP:" rrqforth.map | sed 's/ .*//')"