We now have a cvs repository:
export CVSROOT=/pro/web/web/courses/cs233/cvsroot cvs checkout ndg
Matt Lease's DebuggerUI [source]
Sebastien Chan-Tin and Cora's SymbolTable [source]
Guillaume Marceau's Engine [source]
Kate Ho's ExprEval [source] and Codeaccess [source]
Nathan Weston's Process control [source]
Write an API which present the following functionality:
Then, write down an automaton for the states a debugger goes through as you are using it. Think of the tricky corner cases: what does it means to add a breakpoint while the program is running? etc. Consider what to do when multiple event happen at the same time. Remember the first rule of concurrent events: if it can happen, it will. |
| How to set breakpoints at the beginning of each function. Guy and Nathan have a solution. |
| breakpoints, conditional, programmatically |
| print, trace, watch, modify data |
| source prints |
| static prints |
| change pc, per instr, per line, per frame |
| load, run, kill, attach programs |
| stop in, over, out |
| view memory |
| expression evaluation |
| emacs interface, other editors |
| thread switching, listing, deterministic scheduling |
| memory checking (purify, valgrind) |
| static, dynamic analysis |
| code patching (jump to interpreter?) |
| ipc-aware |
| running backward, checkpoints |
| higher-order events, aspect oriented language |
| replay of interactive debugging sessions |
|   |
| abstraction holes |
| performance analysis |
| stochastic asserts, with performance tracking |
| dynamic access to checkpoint data |
| printing scrolling logs of graphical objects |
| make a distinction between the debugging data being logged and its format, so that the presentation format can be changed without having the re-run the code. |