And now I finally took a day to implement a debugger for HAL. Admittedly it is a very rudimentary design with few options, but it does work. It turned out to be quite interesting in that it touched many aspects of programming
- designing and implementing a user interface
- ordering the implementation of features so they can be tested (i did the user interface first, so the breakpoint data could come from somewhere, and the breakpoint data structure before the hit testing etc.
- compiler modification and debug format specification and generation
- modifying the virtual machine to accommodate the debugger inside it
- because the debugger is inline in the application, multiprogramming of the debugger display versus the rest of the program
All in all it was a lot of fun, and will help some of my colleagues and our partners a lot. Next up in the same area will be more polish on the debugger and many more IDE features for HAL in HansaWorld.