I also see there’s an undocumented classvar debug in Error, which if set to true will automatically trigger some inspect calls when an error happens. So I guess this is the level of automation provided.
Quick and dirty stepping debugger:
c = Condition(false);
~breakpoint = {|cnd| var bt = this.getBackTrace.caller; { bt.inspect }.defer; cnd.wait; cnd.test = false }
{ var x = 1, y; "one".postln; ~breakpoint.(c); y = 2; "two".postln; ~breakpoint.(c); }.fork;
c.test = true; c.signal; // used to step