It works as designed (if JIT is off), it follows CPU execution 1:1, it does not care about interrupts or task switches. For example 't' always stops after next instruction, whatever the previous one did, even if previous instruction caused an exception. ('z' is not good idea if exceptions can happen)

If you want to enter debugger and you run program you can modify, it is usually better idea to use memory watch breakpoints and do something like "clr.w $100" in your program and set memwatch to break when $100 is modified.

Or use 'f <address>' break point command instead of 'z'. Or disable all interrupts

EDIT: updating 'z' to handle exceptions have been planned but it has never been important enough feature to bother with it..