From a macro perspective, the RULES command is useful to see what the program is doing. RULES ON shows the basic rules e.g. "instead of jumping:". RULES ALL shows things like repeat loops, although it doesn't show each value. It also shows which rules don't fire, which can be too wordy.
If you have a bug at the start of the program, you can define acode as follows:
when play begins:
debug-now;
to debug-now:
(- RulesOnSub(); -)
RULES is a double-edged sword. A lot of rules fire when you move between rooms. Fortunately, you can cut and paste a transcript from the IDE for a closer look.
Section 24.4 of the Inform manual describes other tests. The most immediately useful are PURLOIN (give the player an item,) ABSTRACT (move an item somewhere) and GONEAR (warp the player.) One not mentioned is PRONOUNS, which tells what the parser currently maps it/them/him/her to.