anchor.diff:            boolean(),          %% bp active?
             [bp_msg()],         %% queued bp messages
             boolean(),          %% bp stepped?
  -          pid() | unknown     %% bp stepper
  +          pid() | unknown,    %% bp stepper
  +          [comm:mypid()]      %% exception subscribers
           }.
   
   %% define macros for the tuple positions to use them also in guards.
  
positive.code: %     Options, _Slowest = 0.0,
       _BPs = [], _BPActive = false,
       _BPHoldbackQueue = [], _BPStepped = false,
       _BPStepperPid = unknown
      }.
  gc_mod(State) ->                element(?MOD, State).
  gc_hand(State) ->               element(?HAND, State).
  gc_set_hand(State, Handler) ->  setelement(?HAND, State, Handler).
  %% opts
  %% slowest
  -spec gc_bps(gc_state()) -> [bp()].
  
negative.code:                "** Source linetrace (enable in scalaris.hrl):~n ~.0p~n"
                 "** State:~n ~.0p~n"
                 "** Stacktrace:~n ~.0p~n",
      Mod = gc_mod(GCState),
      DbgVal = [Level, Reason,
                Msg,
                Mod,
                gc_hand(GCState),
                self(), catch pid_groups:group_and_name_of(self()),
                erlang:get(test_server_loc),
                {UState, GCState},
                Stacktrace],
      inform_exc_subs(gc_exc_subs(GCState), self(), Mod, {Level, Reason, Msg}),
      log_or_fail(DbgMsg, DbgVal, exception_throw).
  
  -spec inform_exc_subs([comm:mypid()], pid(), atom(), term()) -> ok.
  inform_exc_subs([], _Source, _Mod, _DbgMsg) -> ok;
  inform_exc_subs([Pid | Tail], Source, Mod, DbgMsg) ->
      comm:send(Pid, {'DOWN', exc_subs, Mod, Source, DbgMsg}),
      inform_exc_subs(Tail, Source, Mod, DbgMsg).
  
  -spec log_or_fail(DbgMsg::string(), DbgVal::[term()],
                    Reason::unknown_message | exception_throw) -> ok.
  