In fact, I hardly use BlitzMax debugger. When I need to know if the program enters a specific section of code, I usually just put a "Hello world!" notify and run again to see if it's executed. If I see something wrong, I usually just print to the standard output the stated of the related variables. But in this specific case, the amount of data used is really big to do it this way.
I suspect there might be a problem in the interpreter. Every time a call to a script function is found, the "state stack" (a set of variables where I have the current execution offset, arguments passed, etc) is saved, then the interpreter loads the new arguments, moves to the offset of the function, executes the code in it, and restore the previous stack by updating its "retvalue" field with the result of the called function. The problem is that, since my language is functional, it makes an intensive use or recursivity, and you can guess how much indented calls have been made there (a few hundred in the program I am testing now). It is simply impossible to output to the console an stack this big and check line by line the state of all variables to find out where it got messed up and moved to an incorrect location. It is easier to stop when the program is about to enter the recursive calls, and step by step to see if the stack gets corrupted at any time.
I suspect there might be a problem in the interpreter. Every time a call to a script function is found, the "state stack" (a set of variables where I have the current execution offset, arguments passed, etc) is saved, then the interpreter loads the new arguments, moves to the offset of the function, executes the code in it, and restore the previous stack by updating its "retvalue" field with the result of the called function. The problem is that, since my language is functional, it makes an intensive use or recursivity, and you can guess how much indented calls have been made there (a few hundred in the program I am testing now). It is simply impossible to output to the console an stack this big and check line by line the state of all variables to find out where it got messed up and moved to an incorrect location. It is easier to stop when the program is about to enter the recursive calls, and step by step to see if the stack gets corrupted at any time.