Thanks David! That looks very promising.
Rather than printing the arguments using displayVal each time, would it be possible to instead print a number identifying the argument value, so that multiple calls to traced functions where some of the arguments are the same re-use the same numbers?
I want to use the trace produced for replaying the sequence of function calls in a context where it is expensive (or sometimes impossible) to reconstruct the arguments from what displayVal prints, but where any value can be saved and associated with a number for later use.
On 12 October 2015 at 19:03, David Matthews <David.Matthews at prolingua.co.uk> wrote:
Hi Ramana, There's nothing specific but the new DebuggingInterface structure should allow you to build this yourself.
First build the new compiler with "make compiler" then compile your function with PolyML.Compiler.debug := true; before it. You don't need to compile your whole program with debugging; just the bit with the function you're interested in.
PolyML.Compiler.debug := false; (* Don't compile this with debugging! *) open PolyML.DebuggerInterface PolyML.NameSpace;
fun trace(fnName, _) = if String.isSubstring "myname" fnName then let val args = debugFunctionArg(hd(debugState(Thread.Thread.self()))) in PolyML.prettyPrint(TextIO.print, 90 (* Line length *)) (displayVal(args, 100 (* Depth *), PolyML.globalNameSpace)) end else (); setOnEntry(SOME trace);
Run your program and every time it enters a function that matches the test it will print the arguments.
The DebuggerInterface structure is still a bit fluid so some things may change before the final release.
David
On 11/10/2015 08:20, Ramana Kumar wrote:
Hi all,
Does Poly/ML include any facility for tracing calls to (certain) functions? I am interested in generating a log of all calls to certain functions (including their arguments), in order, during the run of some program.
Perhaps there is something in the profiler that can help with this?
Cheers, Ramana
polyml mailing list polyml at inf.ed.ac.uk http://lists.inf.ed.ac.uk/mailman/listinfo/polyml
polyml mailing list polyml at inf.ed.ac.uk http://lists.inf.ed.ac.uk/mailman/listinfo/polyml