Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: dbg_down
Class: gp
Section: programming/control
C-Name: dbg_down
Prototype: vD1,L,
Help: dbg_down({n=1}): (break loop) go down n frames. Cancel a previous dbg_up.
Doc: (In the break loop) go down n frames. This allows to cancel a previous
call to \kbd{dbg\_up}.
\bprog
? x = 0;
? g(x) = x-3;
? f(x) = 1 / g(x+1);
? for (x = 1, 5, f(x+1))
*** at top-level: for(x=1,5,f(x+1))
*** ^-------
*** in function f: 1/g(x+1)
*** ^-------
*** _/_: impossible inverse in gdiv: 0.
*** Break loop: type 'break' to go back to GP prompt
break> dbg_up(3) \\ go up 3 frames
*** at top-level: for(x=1,5,f(x+1))
*** ^-----------------
break> x
0
break> dbg_down()
*** at top-level: for(x=1,5,f(x+1))
*** ^-------
break> x
1
break> dbg_down()
*** at top-level: for(x=1,5,f(x+1))
*** ^-------
break> x
1
break> dbg_down()
*** at top-level: for(x=1,5,f(x+1))
*** ^-------
*** in function f: 1/g(x+1)
*** ^-------
break> x
2
@eprog\noindent The above example shows that the notion of GP frame is
finer than the usual stack of function calls (as given for instance by the
GDB \kbd{backtrace} command): GP frames are attached to variable scopes
and there are frames attached to control flow instructions such as a
\kbd{for} loop above.