Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>There's currently no step-based debugger. </p> <p>You can get stack backtraces by doing the following:</p> <pre><code>- CM.make "$smlnj-tdp/back-trace.cm"; [library $smlnj-tdp/back-trace.cm is stable] [library $smlnj-tdp/plugins.cm is stable] [library $SMLNJ-LIB/Util/smlnj-lib.cm is stable] [library $smlnj/compiler/current.cm is stable] [library $smlnj/compiler/x86.cm is stable] [library $smlnj/viscomp/core.cm is stable] [library $smlnj/viscomp/parser.cm is stable] [library $smlnj/viscomp/basics.cm is stable] [library $smlnj/viscomp/elaborate.cm is stable] [library $smlnj/viscomp/elabdata.cm is stable] [library $smlnj/MLRISC/MLRISC.cm is stable] [library $SMLNJ-MLRISC/MLRISC.cm is stable] [library $Lib.cm(=$SMLNJ-MLRISC)/Lib.cm is stable] [library $Control.cm(=$SMLNJ-MLRISC)/Control.cm is stable] [library $Graphs.cm(=$SMLNJ-MLRISC)/Graphs.cm is stable] [library $smlnj/MLRISC/Control.cm is stable] [library $smlnj/viscomp/debugprof.cm is stable] [library $smlnj/viscomp/execute.cm is stable] [library $smlnj/internal/smlnj-version.cm is stable] [library $smlnj/viscomp/x86.cm is stable] [New bindings added.] val it = true : bool - SMLofNJ.Internals.TDP.mode := true; [autoloading] [autoloading done] val it = () : unit - </code></pre> <p>Then, you can load some code and instead of just printing the exception, you'll get a simulated stack backtrace. You do have to recompile your code after following the above steps, or this won't work!</p> <pre><code>- exception Foo; exception Foo - fun otherFun() = raise Foo; val otherFun = fn : unit -&gt; 'a - fun raiseAtZero(n) = if (n &gt; 0) then raiseAtZero(n-1) else otherFun(); val raiseAtZero = fn : int -&gt; 'a - raiseAtZero 10; stdIn:9.1-9.15 Warning: type vars not generalized because of value restriction are instantiated to dummy types (X1,X2,...) *** BACK-TRACE *** GOTO stdIn:7.5-7.27: otherFun[2] (from: stdIn:8.60-8.70: raiseAtZero[2]) CALL-( stdIn:8.5-8.70: raiseAtZero[2] (from: stdIn:9.1-9.15: it) GOTO stdIn:5.5-5.27: otherFun[2] (from: stdIn:6.60-6.70: raiseAtZero[2]) CALL-( stdIn:6.5-6.70: raiseAtZero[2] (from: stdIn:6.71-6.86: it) uncaught exception Foo raised at: stdIn:7.24-7.27 - </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload