[squeak-dev] Debugger bug: disappearing contents
Frank Shearar
frank.shearar at angband.za.org
Sat Nov 13 17:35:17 UTC 2010
Hi,
I've been chasing down a strange bug these past few days:
http://bugs.squeak.org/view.php?id=7569
The executive summary is this: when viewing a method in the debugger
that refers to an instvar deleted after the Debugger instantiated, the
CodePane shows the correct source for a fraction of a second, and then
goes blank.
What I'd expected to see was the source of the method rendered as per
usual, and the reference to the missing instvar coloured red, to
indicate a problem. (Just like what you'd see if you opened up a Browser
on the method.)
The CodePane goes blank because the Debugger's contents instvar is
nilled out.
CodeHolder>>setContentsToForceRefresh nils the instvar because
CodeHolder>>didCodeChangeElsewhere returns true.
That method returns true because the Debugger's currentCompiledMethod
instvar and the compiled method according to "aClass compiledMethodAt:
aSelector" aren't the same object.
And now I'm a bit stuck. I know the behaviour I'd expect, I know why the
bug's happening, but how do I fix it? Does CodeHolder (or Debugger) need
a better way of knowing whether the viewed method's changed? (For
instance, comparing the two CompiledMethods' asCommaString shows
identical contents.)
frank
More information about the Squeak-dev
mailing list
|