Proposal by Clara Allende for Debugger Improvements

Proposed by Clara Allende (profile, biography)

How will I do that project

I will get in touch with my mentors periodically, and with the community for every important decision / milestone reached.

I plan to dedicate 15 hours a week to the project, at least.

As for technologies, I must spend some time learning about the current debugger + AST Interpreter implementation, as well as Spec.

Then, once the debugger is extended to use the Interpreter, I will start working on integration with object-centric debugger.

What methodologies will I use

I will mostly use TDD, and plan to do time-boxed iterations with short, well defined objectives, providing regular updates to my mentors, so as to get guidance and make decisions all together.

Suggested timeline and milestones

1) Get familiar with current AST Interpreter implementation, then extend it as to support debugging.
2) Integrate the debugger with the AST interpreter
3) Extend the debugger (or maybe a new one) based on Object-centric Reflection
  -integrate current object-centric debugger
  -have different kinds of breakpoints, and manipulate them as simple objects, so as to be able to:
  -having conditional breakpoints (able to subscribe to an event and react interrupting message sends), i.e: 
          ConditionalBreakpoint new haltAt: #aMessage sentTo: #anObject 
   -composing them, i.e:
         (ConditionalBreakpoint new haltAt: #aMessage sentTo: #anObject ) or:  Breakpoint new onThirdPass.
4) Get familiar with Spec (as I'm only familiar with Morphic) and provide a simple UI for the new debugger 

Where I see the risks

Some tools, i.e Bifrost, may need to be ported to current Pharo 3.0 alpha (which is required for integration with Opal)

How the results will look like

 The community will have a new, more powerful debugger which will provide much more information and control over method execution, with a new and declarative user interface.

Updated: 2.5.2013