On 08/02/2013 10:10, John Doty wrote: > On Wednesday, February 6, 2013 9:28:00 PM UTC-5, Richard Fateman wrote: > >> I personally find the debugging facilities in Mathematica to be quite >> >> difficult to use. > > I personally don't use them, but I personally find Mathematica programs easy to debug. > >> I speculate that it is because the "working model" >> >> I have in my mind (and I suspect others share it) is that I am writing >> >> programs, composing them in various ways. In reality, the internal >> >> evaluation strategy of Mathematica is to apply rules to transform >> >> expressions. So while I'm looking for a clue as to which "program" >> >> has the bug, the debugging info shows transformations of expressions. > > Yes! Now, we're getting someplace. > >> >> This jerking back into the reality of Mathematica's actual nature >> >> of evaluation generally prompts me to shy away from the use of Trace. > > If you're using Mathematica, why ever leave that reality? Why not stay in it and use its power? If that's not working for you, why use Mathematica in the first place? > >> >> I don't know if it is inevitable, but Trace in particular, and debugging >> >> in general in Mathematica seem to me to be quite weak. > > Trying to figure out what Mathematica's doing using Trace is like trying to figure out what a 1960's mainframe was doing from the blinking lights on the console. Useful in special circumstances, but too much detail in general. >
This is why I wrote the DebugTrace package - available free from my website.
Sometimes we all have to debug badly structured code. For example, if you are a consultant, you simply have to understand a client's code, however it is structured!
Also, many people use Mathematica infrequently, and don't want to spend a great deal of time understanding its philosophy.
For that reason, DebugTrace reintroduces the fiction of functions, so that when a program pauses at a breakpoint, or when it generates an error message, you can obtain a trace-back of what called what, at which line number. Line numbers relate to a special 'listing' notebook that is generated as the debugger starts.
Since I don't really like the Workbench, all this runs directly in the FrontEnd!