|
Project Information
|
Smart Debugger for Perl, Python, Ruby, FirebugIntroduction Many programmers never touch the debugger. Because debugger is powerful
but somewhat esoteric. It provides granular controls for the debugging,
but failed on convenience. My goal for writing Smart Debugger is to
provide convenience and usability features.
Debugger Usability Many people are most comfortable with adding debugging variables and
print statements to their code. These are fine techniques; I use them
too, when they are appropriate. At other times, the debugger is more
convenience to see what is going on right in front of your eyes and poke
the code at the debugger prompt rather than having to modify the code
and rerun it.
Debugger Dimensions Dimension 1: Can somebody help me with this? The only time we reach for
a debugger is when something goes wrong or breaks and our standard
debugging techniques such as print statements (or better yet, log
messages) do not reveal the root of the problem. The source code
debugger runs code in a controlled manner. It allows stepping through a
piece of code one line at a time, walking up and back down call trees,
setting break points, and using the power of the Python shell for
various levels of introspection and control.
Dimension 2: Hell is other people's code ? To mangle an old saying, with
apologies to Sartre, "Hell is other people's code." Other people think
differently than I do; they use weird idioms, and sometimes their
comments are incomprehensible. Invoking the debugger on someone's code
is like having a conversation with the author. It opens the code to the
questions I want answered, in real time--and there's another party in
the conversation, the interpreter. The debugger makes it easy to try
things out, even quicker than writing a one-liner, because the
environment's already set up for the running program.
Debugger vs Smart Debugger Debugger offers the below controls.
Smart Debugger offers the below convenience.
- Data
- controls: setting watch expressions, commands to see the values in run time.
- convenience: data rendering to render only the variables in last exec line.
- Code window
- controls:see the execution line, commands to see the window around lines.
- convenience: always display the window around lines.
- Code markers
- controls: show the current execution line
- convenience: show the last/current execution line.
- Stepping:
- controls: no default. decide step into/over.
- convenience: default is step into.
|