disable all breakpoints initially
[rrq/rrqforth.git] / debug.sh
index b94d7daa2c70e7a6ffe4a920aae5f1210937414a..5d630ee02aa8a8773545a93819744559e6f4a1af 100755 (executable)
--- a/debug.sh
+++ b/debug.sh
@@ -10,21 +10,23 @@ 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" >> 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 <<EOF >> gdbinit
 commands $((NBR+1))
 print (void*) \$rsp
-print (((char*)(*(((void**)\$rax)-2)))+32)
 print (void*) \$rsi
-continue
+print (char*)((*((void**)(*((void**)\$rsi)-16)))+32)
 end
 EOF
 
+echo disable $NBR >> gdbinit
+echo disable $((NBR+1)) >> gdbinit
+
+
 DS="$(grep "${PFX}DS_TOP:" rrqforth.map | sed 's/ .*//')"
 RS="$(grep "${PFX}RS_TOP:" rrqforth.map | sed 's/ .*//')"
 cat <<EOF >> gdbinit