Experimental Mathematica debugger
- To: mathgroup at smc.vnet.net
- Subject: [mg96849] Experimental Mathematica debugger
- From: David Bailey <dave at removedbailey.co.uk>
- Date: Thu, 26 Feb 2009 07:54:29 -0500 (EST)
I have been fairly dissatisfied with the built-in debugger available in versions 6 and 7, and I would like people to try an experimental new debugger called DebugTrace. As some of you may recall, I once wrote a debugger for an earlier version of Mathematica - called M-Debug. That debugger was based on TraceScan, and was unable to locate Mathematica expressions within the original source code. It was also very slow when code was executing to a breakpoint. DebugTrace works in a new way, identifying program locations using line numbers which double as breakpoint toggle buttons! I work as a consultant, and in my experience, projects often start with a very large notebook, full of unstructured code, which it is necessary to understand. Beginners typically write programs in this style - often without a single user-defined function - and DebugTrace can operate well on this kind of code, as well as more elegant code and also packages. DebugTrace is a Mathematica program like any other - i.e. it operates without any kernel hacks, but this means that it is fairly easy to add support for particular pieces of software. For example the debugger knows about my Super Widget Package, and when appropriate, it displays an extra button that enables the debugger to gain control while a modal Java window is being displayed (without closing the window). I imagine that this flexibility may be useful in other contexts. Another revolutionary feature of DebugTrace, is that it comes with actual documentation, illustrated with a small example program! DebugTrace version 0.95 is available free from my website. It will remain free even after it is polished. If you find specific problems, it might be best to e-mail me directly with a simple example. As I say, this project is experimental, and its future development - if any - depends on the feedback I receive. David Bailey http://www.dbaileyconsultancy.co.uk