Howdy,
I'm trying to track down a bug, but PolyML.exception_trace doesn't seem to be working right. See the following example.
% test_exp.ML exception test_exp; fun f () = raise test_exp; fun g () = (2 + (f ())); fun h () = 2 * (g ());
bash> poly --use test_exp.ML
Poly/ML 5.4.2 Testing exception test_exp val f = fn: unit -> 'a val g = fn: unit -> int val h = fn: unit -> int
h ();
Exception- test_exp raised
PolyML.exception_trace h;
Exception trace for exception - test_exp raised in test_stuff.ML line 2
End of trace
Exception- test_exp raised
I'm using the latest Poly/ML SVN version.
a
PolyML.exception_trace only shows the functions that have separate pieces of code. Small functions are inlined by the compiler and won't show up. You can override this by setting PolyML.Compiler.maxInlineSize to something small e.g. zero.
Alternatively, you can use the debugger to find the cause of the exception. Set PolyML.Compiler.debug to true before compiling the code and then set a trap for the exception with PolyML.Debug.breakEx test_exp; It will stop at the exit of the function that raised the exception and you can examine the stack and local variables. Compiling with debugging turned on greatly increases run time so it may not always be feasible but will usually help you find the problem.
Regards, David
On 24/09/2011 17:09, Aleks Kissinger wrote:
Howdy,
I'm trying to track down a bug, but PolyML.exception_trace doesn't seem to be working right. See the following example.
% test_exp.ML exception test_exp; fun f () = raise test_exp; fun g () = (2 + (f ())); fun h () = 2 * (g ());
bash> poly --use test_exp.ML
Poly/ML 5.4.2 Testing exception test_exp val f = fn: unit -> 'a val g = fn: unit -> int val h = fn: unit -> int
h ();
Exception- test_exp raised
PolyML.exception_trace h;
Exception trace for exception - test_exp raised in test_stuff.ML line 2
End of trace
Exception- test_exp raised
I'm using the latest Poly/ML SVN version.
a _______________________________________________ polyml mailing list polyml@inf.ed.ac.uk http://lists.inf.ed.ac.uk/mailman/listinfo/polyml
That's exactly what I needed. Is breakEx documented anywhere? Also, is there any way to break on a parameterised exception, regardless of parameters?
Either way, I managed to get ahold of the exact exception (with params) like this:
exception foo; val exp = (use "bug.ML"; foo) handle e => e; PolyML.Debug.breakEx exp; use "bug.ML";
Very cool.
On 25 September 2011 17:29, David Matthews David.Matthews@prolingua.co.uk wrote:
PolyML.exception_trace only shows the functions that have separate pieces of code. ?Small functions are inlined by the compiler and won't show up. ?You can override this by setting PolyML.Compiler.maxInlineSize to something small e.g. zero.
Alternatively, you can use the debugger to find the cause of the exception. ?Set PolyML.Compiler.debug to true before compiling the code and then set a trap for the exception with PolyML.Debug.breakEx test_exp; It will stop at the exit of the function that raised the exception and you can examine the stack and local variables. ?Compiling with debugging turned on greatly increases run time so it may not always be feasible but will usually help you find the problem.
Regards, David
On 24/09/2011 17:09, Aleks Kissinger wrote:
Howdy,
I'm trying to track down a bug, but PolyML.exception_trace doesn't seem to be working right. See the following example.
% test_exp.ML exception test_exp; fun f () = raise test_exp; fun g () = (2 + (f ())); fun h () = 2 * (g ());
bash> ?poly --use test_exp.ML
Poly/ML 5.4.2 Testing exception test_exp val f = fn: unit -> ?'a val g = fn: unit -> ?int val h = fn: unit -> ?int
h ();
Exception- test_exp raised
PolyML.exception_trace h;
Exception trace for exception - test_exp raised in test_stuff.ML line 2
End of trace
Exception- test_exp raised
I'm using the latest Poly/ML SVN version.
a _______________________________________________ polyml mailing list polyml@inf.ed.ac.uk http://lists.inf.ed.ac.uk/mailman/listinfo/polyml
polyml mailing list polyml@inf.ed.ac.uk http://lists.inf.ed.ac.uk/mailman/listinfo/polyml
I've updated the Debugging documentation to include it. http://www.polyml.org/docs/Debugging.html
David
On 25/09/2011 19:31, Aleks Kissinger wrote:
That's exactly what I needed. Is breakEx documented anywhere? Also, is there any way to break on a parameterised exception, regardless of parameters?
Either way, I managed to get ahold of the exact exception (with params) like this:
exception foo; val exp = (use "bug.ML"; foo) handle e => e; PolyML.Debug.breakEx exp; use "bug.ML";
Very cool.
On 25 September 2011 17:29, David Matthews David.Matthews@prolingua.co.uk wrote:
PolyML.exception_trace only shows the functions that have separate pieces of code. Small functions are inlined by the compiler and won't show up. You can override this by setting PolyML.Compiler.maxInlineSize to something small e.g. zero.
Alternatively, you can use the debugger to find the cause of the exception. Set PolyML.Compiler.debug to true before compiling the code and then set a trap for the exception with PolyML.Debug.breakEx test_exp; It will stop at the exit of the function that raised the exception and you can examine the stack and local variables. Compiling with debugging turned on greatly increases run time so it may not always be feasible but will usually help you find the problem.
Regards, David
On 24/09/2011 17:09, Aleks Kissinger wrote:
Howdy,
I'm trying to track down a bug, but PolyML.exception_trace doesn't seem to be working right. See the following example.
% test_exp.ML exception test_exp; fun f () = raise test_exp; fun g () = (2 + (f ())); fun h () = 2 * (g ());
bash> poly --use test_exp.ML
Poly/ML 5.4.2 Testing exception test_exp val f = fn: unit -> 'a val g = fn: unit -> int val h = fn: unit -> int
h ();
Exception- test_exp raised
PolyML.exception_trace h;
Exception trace for exception - test_exp raised in test_stuff.ML line 2
End of trace
Exception- test_exp raised
I'm using the latest Poly/ML SVN version.
a _______________________________________________ polyml mailing list polyml@inf.ed.ac.uk http://lists.inf.ed.ac.uk/mailman/listinfo/polyml
polyml mailing list polyml@inf.ed.ac.uk http://lists.inf.ed.ac.uk/mailman/listinfo/polyml
polyml mailing list polyml@inf.ed.ac.uk http://lists.inf.ed.ac.uk/mailman/listinfo/polyml