Open nadako opened 9 months ago
Another idea to consider is tracking dispatcher subscriptions in general (so both bindings and auto-observable dependencies), so we could have a debug tool to visualize all connections, similarly to R3 ObservableTracker
.
The original Haxe tink_state library has a special compilation flag (
tink_state.debug
) that adds extra debugging info to each observable and a way to get the dependency tree of any observable at the given moment, which is pretty handy for debugging.For example this code would output a nice indented tree of observables that depend on each other.
As we can see, it also stores the file/line where the observable were instantiated, which definitely helps tracking them down. It is also possible to provide custom
toString
methods to give them specific names, but this is usually not needed.Note that in C# the positions can also be magically aquired, similar to
haxe.PosInfos
, viaCallerLineNumber
attribute and friends. I imagine that this can be also integrated into a Unity/Godot inspector to display nicely.Another thing this compilation flag does is logging invalidations and the whole auto-observable machinery, which also seems quite useful.