Updownquark / Quick

Quark's User Interface Creation Kit
0 stars 0 forks source link

Observable Debugger #63

Closed Updownquark closed 9 years ago

Updownquark commented 9 years ago

I need to make a debugger to debug observable connections. I'm fairly confident that most of the serious bugs are worked out of the observable framework itself, but the wiring of them is so hard to debug that it really needs its own debugger.

Updownquark commented 9 years ago

Need to lay the observables out in a graph structure or something and step through the propagation of events. It needs to somehow be clear which observables belong to a collection. This is going to be very difficult due to the fact that every operation (filter, map, etc.) on an observable or collection creates a new observable or collection.

This project looks like they have some good ideas. The tagging of observables looks very useful.

Updownquark commented 9 years ago

This debugger needs to be able to step through a whole observable's logic to the next observer with one button. The biggest thing this needs to do is to show the observables for what they logically are. So a filter will show that it's a filter of a different observable and, if I can manage it, show the code by which it filters and allow me to step into it or put a breakpoint (hopefully conditional) on it.

I'm thinking the debugger won't be tightly integrated into the observables, as in, there won't be any debug methods on observables themselves. It'll be a framework that observables can be labeled in. They'll have to self-report. All of the construction of the debugging structures will be disabled if a static flag is false for performance. This will probably be set initially by a -D argument.

The debugger will support tagging (labeling an observable with a string). An observable may have any number of tags. Separately, an observable may be labeled as having a relationship to another observable. E.g. an element of a collection or a filter or a map. This method should allow the caller to give a lambda or other interface implementation which is the filter or mapping function. If I can, I want to find a way to dissect the debugging information from this and figure out the file and line numbers it's from so I can pull the code and present it.

It will feature a tree or list of observables that grow as you step down deeper. I would also like to make some kind of 2D graphical UI component that displays a selected observable with its relationships to other observables known to the debugger. Clicking on one of the related observables would shift focus to that observable and display its relationships, and so on. Back and forward operations would be supported. Grouping might be a good idea, where observables with something in common could be tagged with identical tags and these could be grouped in the GUI to make a high-level picture of the observable structure possible. Effort will be made to make it easy to switch between this debugger and eclipse for debugging filters and custom observers, etc.

Updownquark commented 9 years ago

I'm closing this, since it belongs in the new repo. I've re-created this issue there: ObServe #3.