[comp.sys.transputer] Debugging dereference cycles

kahn@parc.xerox.com (Ken Kahn) (07/12/90)

Yesterday I spent over 3 hours tracking down a bug that was due to the
fact that I managed to create a variable that was bound to itself.  It
is very hard to debug such programs.  I used the raw trace package (it
produced a 1.5 MegaByte file) and lots of print statements and it still
was very hard to localize once I suspected what the problem is.

I think the Strand implementation is doing the "right" thing since any
alternative that I can imagine would slow things down.  What I
would like to see, however, is a Strand implemenation that had a
"development mode" -- a generalization of the current "resolvent" mode.
When developing code I would like the implementation of X := Y to
dereference both X and Y and check if they are the same before doing the
assignment and if they are the same signal an error.  I would like it to
also do an occur check if Y is a tuple.

Maybe people on this list can think up other things that would be useful
while debugging code.

 -ken kahn