hmmm, good thought. Seems to me that the right solution is in the primitive simulations in Context>>tryPrimitive... or Context>>doPrimitive... (*) so that the debugger process isn't terminated, but the process being debugged is.
(* at my phone right now so don't have the code to look at to answer the correct selectors) _,,,^..^,,,_ (phone)
I imagine a newcomer exploring the system could easily step off the end of the debug stack like this...
(1 printString) "debugIt"
then StepOver six times where the image hangs at "Processor terminateActive"
This could have a strong impact against first impressions.
What would it take to guard against this?
I just took a look at this in Squeak and fixed it there. All I had to do was fix Process>>completeStep: and arrange that the Debugger wasn't confused when it got back the nil suspendedContext of a terminated process and that it disabled its into/over/through buttons on process termination. You can see the Squeak changes in these two commits: