Yeah, that sounds right. The debugger needed to be able to step through lines of code like normal (to debug the logic framework) as well as to step through search steps (to debug programs written in the framework) defined in terms of the system semantics (since bugs could be in either program or framework at this point). It also needed to recognize the semantics not only of the framework, but of the debugging interaction, because I needed it to step through the search space until it arrived at a particular leaf of the search frontier. The framework itself basically does a breadth-first-search, and it doesn't care when a particular frontier node will be visited again, but if I am tracing the search in one particular part of the space for the very specific purposes of debugging, only then do I need the debugger to recognize the semantics of when we are expanding a child of a given frontier node. I also played with the idea of actually changing the search order while debugging, which would change the semantics of the actual running program to make it turn out a certain way so that I could observe rare behavior. The analogy would be manually setting a random number in the debugger, except that it might take more than a single instance variable assignment to change the structure of a search tree. Evan -- View this message in context: http://forum.world.st/What-is-the-craziest-bug-you-ever-face-tp4937984p49380... Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.