Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: dbg_up
Class: gp
Section: programming/control
C-Name: dbg_up
Prototype: vD1,L,
Help: dbg_up({n=1}): (break loop) go up n frames, which allows to inspect data
of the parent function.
Doc: (In the break loop) go up n frames, which allows to inspect data of the
parent function. To cancel a \tet{dbg_up} call, use \tet{dbg_down}.
\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> x
2
break> dbg_up()
*** at top-level: for(x=1,5,f(x+1))
*** ^-------
break> x
1
break> dbg_up()
*** at top-level: for(x=1,5,f(x+1))
*** ^-------
break> x
1
break> dbg_up()
*** at top-level: for(x=1,5,f(x+1))
*** ^-----------------
break> x
0
break> dbg_down() \\ back up once
*** at top-level: for(x=1,5,f(x+1))
*** ^-------
break> x
1
@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.