Bug in release only

I learned a great word recently: Heisenbug. A bug that disappears when you look at it too closely.

I’ve been looking at transcripts of my comp game, and I see a weird bug that I can’t explain. So I enter exactly the same commands into the IDE interpreter and… no bug! Has anyone dealt with this before? I feel like my hands are tied - I can’t do ‘rules’ or ‘actions’ or any of the other debugging commands that I’d usually use to figure out what’s going on. I’m not even sure if I can run the release version in the IDE so I don’t have to switch back and forth between the interpreter and the IDE.

What do you do?

First, you try the same commands in the release version to make sure the bug exists. Or maybe it’s sporadic.

If you can reproduce it in Parchment, try it again in Frotz – maybe it’s an interpreter bug.

If it really is a matter of debug versus release, go back to the debugging methods they used in Megatherium times: add more print statements. Stick a “say” in every rule you’ve got, and it’s as good as “rules on”.

Yeah, looks like I’m gonna have to do that. The bug shows up both in Zoom and Parchment. So is there no way to play a release-compile in the IDE?

There is the possibility that some of your “not for release” code is preventing the bug from occurring.

Okay, so I started off by putting a debug rule in the DPMR. It looks like the release version runs the Asking Which Do You Mean rule without running the DPMR. Is that ever supposed to happen? If so, when?

The erroneous response is “Who do you mean, ?” Which makes me think it’s interpreting my command as orders and looking for the person asked. But even “does the player mean asking someone to try doing something” doesn’t run.

Aha! There was an #Endif DEBUG in the wrong place! Mystery solved.