A lightweight and interactive back-in-time debugger for Squeak to trace and retrace past method invocations and state changes. Powered by SimulationStudio.
[ ] We are still rebuilding the tree after every step (#wrapRoots), which helps us fulfill all invariants, but is terribly slow. Updating the trace iteratively would be hard with respect to the current limitations of the PluggableTreeMorph API, automatic expansion of relevant nodes, and coroutines (#14).- [ ] use non-linear search algorithms for stepping operations (i.e., binary search with unknown size)
[ ] All stepping operations could be optimized by rolling out an exponential search mechanism. For this, we would need to define an absolute criterion for "whether a timeIndex belongs to the right step".
[ ] optimize inspector updates (could be possible with the help of #21)
[ ] not yet optimized: stepBack
[ ] Reduce truncationLimit in snapshot inspectors (requires upstream contribution)
Current bottlenecks:
TDBCursor>>#traceFor:
(viaTDBCursor>>#childContextsFor:
, 68%) - forego generators inTDBTrace>>#withAllDescendants
, use binary depth-first searchTDBTrace>>#traceAtTime:
(13%) - inline binary search? don't use#associations
.Further optimization potential:
#wrapRoots
), which helps us fulfill all invariants, but is terribly slow. Updating the trace iteratively would be hard with respect to the current limitations of thePluggableTreeMorph
API, automatic expansion of relevant nodes, and coroutines (#14).- [ ] use non-linear search algorithms for stepping operations (i.e., binary search with unknown size)truncationLimit
in snapshot inspectors (requires upstream contribution)