One thing I remember from 25 years ago using Turbo Pascal is having an
"Expression Watcher" pane, where expressions could be defined that were
evaluated after each debugging step. With this you could drill down to
a particular interesting part of a data structure to observe how it
changes with time. I am reminded of this since just now, since I am
finding each time I rerun a test script and the debugger opens up at my
'halt' point, I am repetitively having to 'inspect' from a root object
through several levels of components to compare the components of
interest - before continuing to step the code watching how these
component values change in relation to each other.
For example if variable1 holds an OrderedCollection of five morphs and I
want to watch the 'bounds' of all five elements simultaneously as they
update at each debugging step - currently each time after the debugger
opens I have to inspect variable1, then Inspect each of the elements,
the select the 'bounds' instance variable in each Inspector window, then
shrink the size each inspector so that they don't obscure the screen,
which is fairly tedious to do each time. Further, with 'bounds'
matching an instance variable this is at least possible - once this is
set up I can watch the 'bounds' value change with each debug step.
However if I want to observe how the 'extent' of each morph changes with
each debug step I am out of luck. With my current knowledge, I would
need to manually execute 'self extent' in each of the five Inspectors
after each debug step,
It would be good if there were some way for expressions to be defined
which persist through debugger invocations that at each debug step are
evaluated on the instance variables available in the debugger at that time.
For the example above this might be defined of the form... <'label'>
<expression>
<'extent1'> <(variable1 asArray at: 1) extent>
<'extent2'> <(variable1 asArray at: 2) extent>
<'extent3'> <(variable1 asArray at: 3) extent>
<'extent4'> <(variable1 asArray at: 4) extent>
<'extent5'> <(variable1 asArray at: 5) extent>
Is there currently any way to do this, or would others find something
like this a useful feature ?
cheers -ben