This page exists to help plan out soh_cah_toa's GSoC project. Unfortunately, it turns out to depend heavily on parts of IMCC which were substantially more broken than anyone realized. Although IMCC has gotten the attention of our developers, the GSoC project's schedule shouldn't make any assumptions as to whether IMCC will improve.

My (cotto) plan is to rework HBDB's schedule so that it can be a maximally useful debugger by the end of GSoC within the limitations of what IMCC can provide. The first step is to break the original schedule into a list of discrete features and to divide those features into five groups: those that are completed (with or without tests), those that depend on IMCC's broken line number annotations, those that don't, and those that may not be possible due to time constraints. From there, we can work out a new schedule that will show measurable progress and be completable while avoiding some of the more egregious landmines provided by IMCC.

Completed with tests:

  • Help

Completed without tests:

  • Backtrace
  • Breakpoints (PC)
  • Bytecode disassembly
  • Enable/disable breakpoints
  • Single-step execution
  • Source listing
  • Start/continue execution

Dependent on IMCC cleanups:

  • Breakpoints (line)

Not dependent on IMCC cleanups:

  • Add debugee interactively with a gdb-like 'file' command
  • Breakpoints (function)
  • Execute until the next annotation change
  • Print registers
  • Read HLL annotations
  • Read data from debug segment
  • Trace open file handles (including children)
  • Watchpoints (registers)

May not be possible before end of summer:

  • Code instrumentation (steal from parrot-instrument)
  • Code introspection (steal from parrot-instrument)
  • Debugger scripting
  • Dynamic memory analysis (check for uninitialized values)
  • Dynamic memory analysis (destruction-triggered watchpoints)
  • REPL
  • Reversible debugging


Aug. 7 - 10/11

  • Complete test coverage of currently implemented features/commands
  • Update documentation to include current command set
  • Re-design 'step' command to run until next line annotation change
  • Begin designing watchpoints