[Reflectivity] Links on Literal Variables
Hi, Lots of progress on the Reflectivity project⦠What is now working is this: 1) define a simple âHalt onceâ link: haltLink := MetaLink new metaObject: Halt; selector: #once. 2) install on the GlobalVariable that is referencing class Object: Object binding link: haltLink. 3) enable haltOnce in the system Menu â> next time the global variable âObjectâ is accessed, you get a halt. Keep in mind that lots of things are not yet working⦠but every day some progress. trello board is here: https://trello.com/b/m5cxaAxB/reflectivity Next big issues to fix - #after and #instead for LiteralVariable - links on Slots and Temps - more tests - classes should be able to define which methods should use meta-recursing stopper - make "Object methods do: #createTwin. Object methods do: #invalidate.â work Marcus
On Wed, Sep 30, 2015 at 2:21 AM, Marcus Denker <marcus.denker@inria.fr> wrote:
Hi,
Lots of progress on the Reflectivity projectâ¦
What is now working is this:
1) define a simple âHalt onceâ link:
haltLink := MetaLink new metaObject: Halt; selector: #once.
2) install on the GlobalVariable that is referencing class Object:
Object binding link: haltLink.
3) enable haltOnce in the system Menu
â> next time the global variable âObjectâ is accessed, you get a halt.
I'm looking forward to when I'm familiar enough with this for to be part of my instinctive workflow. I get the feeling this will revolutionize how our systems can be debugged. Often I might have an object I want to investigate but not know where to break into the code to learn about it. Sometimes thats putting halts in all accessors, but that is tedious. Now to make it easier to use what would be good is something like... anObject haltOnNextAccess. which enables halt once just for this breakpoint (I presume this might be possible) Also maybe... anObject haltOnEveryAccess. anObject haltOnEveryAccessFor: 5 seconds. On another track, is/can there be a facility that logs access rather than halting. Sometimes you get a faster understanding from observing a lot of movement from further away than from freezing things and going a step at a time from inside. Currently I sometimes find the following helpful... Transcript crShow: thisContext printString ,'<<', thisContext sender printString ,'<<', thisContext sender sender printString but its tedious to plug into several locations. Maybe this could be something like... anObject traceEveryAccessFor: 10 seconds contextDepth: 3. cheers -ben
Keep in mind that lots of things are not yet working⦠but every day some progress.
trello board is here: https://trello.com/b/m5cxaAxB/reflectivity
Next big issues to fix
- #after and #instead for LiteralVariable - links on Slots and Temps - more tests - classes should be able to define which methods should use meta-recursing stopper - make "Object methods do: #createTwin. Object methods do: #invalidate.â work
Marcus
I'm looking forward to when I'm familiar enough with this for to be part of my instinctive workflow. I get the feeling this will revolutionize how our systems can be debugged. Often I might have an object I want to investigate but not know where to break into the code to learn about it. Sometimes thats putting halts in all accessors, but that is tedious.
Now to make it easier to use what would be good is something like... anObject haltOnNextAccess. which enables halt once just for this breakpoint (I presume this might be possible) Also maybe... anObject haltOnEveryAccess. anObject haltOnEveryAccessFor: 5 seconds.
Yes, and imagine it deeply integrated with the IDE: you can put a (conditional, object specific) halt on anything, there will be a light-wight âwatcherâ to look at values of variables and values, and so on...
On another track, is/can there be a facility that logs access rather than halting. Sometimes you get a faster understanding from observing a lot of movement from further away than from freezing things and going a step at a time from inside. Currently I sometimes find the following helpful... Transcript crShow: thisContext printString ,'<<', thisContext sender printString ,'<<', thisContext sender sender printString but its tedious to plug into several locations. Maybe this could be something like... anObject traceEveryAccessFor: 10 seconds contextDepth: 3.
Ah, thatâs a nice ideaâ¦. imagine that not with Transcript output but a special tool somehow⦠a bit like a halt that does not halt yet visualises the stack (execution flow) at a point in the code. Marcus
participants (2)
-
Ben Coman -
Marcus Denker