[isabelle-dev] NEWS: IDE support for the source-level debugger of Poly/ML

Makarius makarius at sketis.net
Thu Aug 20 17:43:36 CEST 2015


*** Prover IDE -- Isabelle/Scala/jEdit ***

* IDE support for the source-level debugger of Poly/ML, to work with 
Isabelle/ML and official Standard ML. Configuration option "ML_debugger" 
and commands 'ML_file_debug', 'ML_file_no_debug', 'SML_file_debug', 
'SML_file_no_debug' control compilation of sources with debugging 
information. The Debugger panel allows to set breakpoints (via context 
menu), step through stopped threads, evaluate local ML expressions etc. At 
least one Debugger view needs to be active to have any effect on the 
running ML program.

This refers to Isabelle/077f663b6c24. A small example is included as 
attachment.

The Poly/ML debugger interface is 
new, see also 
http://www.polyml.org/documentation/Reference/PolyMLDebuggerInterface.html

We have now the opportunity to test all that thoroughly, before David 
Matthews can roll out a proper release.


 	Makarius
-------------- next part --------------
theory Debugger_Example
imports Pure
begin

section \<open>Minimal example\<close>

text \<open>
  \<bullet> Ensure that the Debugger panel is open

  \<bullet> Right-click on the "fun\<bullet>loop" breakpoint and enable it via context menu item
    "Toggle Breakpoint".

  \<bullet> Edit some spaces in lemma statement to re-check ML_val invocations below,
    and run into the debugger.

  \<bullet> Step through the ML source, using Debugger controls, depending on thread
    context.
\<close>

declare [[ML_debugger = true]]

ML \<open>
  fun print n s = writeln (string_of_int n ^ " " ^ s);

  fun loop n =
    if n <= 0 then n
    else
      let
        val _ = print n "a";
        val m = loop (n - 1);
        val _ = print (m + 1) "b";
      in n end;
\<close>

ML_val \<open>loop 10\<close>
ML_val \<open>loop 10\<close>
ML_val \<open>loop 10\<close>

end


More information about the isabelle-dev mailing list