My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members

Smart Debugger for Perl, Python, Ruby, Firebug

Introduction

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
    1. controls: setting watch expressions, commands to see the values in run time.
    2. convenience: data rendering to render only the variables in last exec line.
  • Code window
    1. controls:see the execution line, commands to see the window around lines.
    2. convenience: always display the window around lines.

  • Code markers
    1. controls: show the current execution line
    2. convenience: show the last/current execution line.

  • Stepping:
    1. controls: no default. decide step into/over.
    2. convenience: default is step into.
Powered by Google Project Hosting