Problem using the debugger with recursive calls

Brock Jones <[email protected]>
Newsgroups gmane.comp.lang.forth.gforth
Message-ID <CAK4Z5WnKn__OKiqV3FYgwuizucekGz8M9QwbUTuGoDqZZSWpcw@mail.gmail.com>
The GForth debugger is giving me weird results when I'm trying stuff with
recursion, for example take this factorial word

: FACTORIAL ( +n1 -- +n2)
   DUP 2 < IF DROP 1 EXIT THEN
   DUP 1- RECURSE *
;


If I try 3 dbg FACTORIAL I get

: FACTORIAL
Scanning code...

Nesting debugger ready!
[ 1 ] 00003
7F4E5EC372F0 55ED908EF498 dup            -> [ 2 ] 00003 00003
7F4E5EC372F8 55ED908EF1C0 2              -> [ 3 ] 00003 00003 00002
7F4E5EC37308 55ED908EF320 <              -> [ 2 ] 00003 00000
7F4E5EC37310 55ED908EF0B8 IF             -> [ 1 ] 00003
7F4E5EC37340 55ED908EF498 THEN dup       -> [ 2 ] 00003 00003
7F4E5EC37348 55ED908EF1F8 1-             -> [ 2 ] 00003 00002
7F4E5EC37350 55ED908EF070 FACTORIAL      -> [ 3 ] 00003 00002 00001
7F4E5EC37360 55ED908EF218 *              -> [ 2 ] 00003 00002
7F4E5EC37368 55ED908EF088 ;              ->  ok
  ok
.s <1> 6  ok


So the debugger makes it seem like when I run 3 FACTORIAL the result should
be 2, 3 in the stack, which isn't what it should show. If I run 3 FACTORIAL
without debugging then the result is 6 in the stack.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.