| | 7 | FEATURES: |
| | 8 | read HLL annotations |
| | 9 | read data from debug segment |
| | 10 | code instrumentation (steal from parrot-instrument) |
| | 11 | code introspection (steal from parrot-instrument) |
| | 12 | enable/disable breakpoints |
| | 13 | breakpoints (line) |
| | 14 | breakpoints (function) |
| | 15 | watchpoints (registers) |
| | 16 | reversible debugging |
| | 17 | execute until the next annotation change |
| | 18 | backtrace |
| | 19 | bytecode disassembly |
| | 20 | debugger scripting |
| | 21 | trace open file handles (including children) |
| | 22 | dynamic memory analysis (check for uninitialized values) |
| | 23 | dynamic memory analysis (destruction-triggered watchpoints) |
| | 24 | print internal debugger state info |
| | 25 | start/continue execution |
| | 26 | single-step execution |
| | 27 | print registers |
| | 28 | help |
| | 29 | source listing |
| | 30 | |
| | 31 | |
| 34 | | |
| 35 | | Backtrace using the CallContext and Exception PMC. |
| 36 | | |
| 37 | | Bytecode disassembly (possibly with pbc_dump). |
| 38 | | |
| 39 | | Scripting. For instance, interpreting a file as a set of debugger commands. |
| 40 | | |
| 41 | | There's much, much more that can be added in the future. These are just a few. |
| 42 | | |
| 43 | | Trace all open file handles. |
| 44 | | |
| 45 | | This would also mean it'd have to trace all child processes. |
| 46 | | |
| 47 | | Dynamic memory analysis. |
| 48 | | |
| 49 | | Check arguments to function calls for uninitialized or invalid values. |
| 50 | | |
| 51 | | Place a watch on all or individual PMC's to detect when it has been reclaimed by the garbage collector. |
| 52 | | |
| 53 | | Timeline: |
| 54 | | |
| 55 | | Begin designing initial set of commands. A good starting point would be: enable/disable breakpoints, start/continue execution, stepping, print registers, source listing, help, etc |
| 56 | | |
| 57 | | commands for bytecode disassembly, command scripting, printing information about the interpreter, etc. |