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:                "** Source linetrace (enable in scalaris.hrl):~n ~.0p~n"
                 "** State:~n ~.0p~n"
                 "** Stacktrace:~n ~.0p~n",
      DbgVal = [Level, Reason,
                Msg,
                gc_mod(GCState),
                gc_hand(GCState),
                self(), catch pid_groups:group_and_name_of(self()),
                erlang:get(test_server_loc),
                {UState, GCState},
                Stacktrace],
      log_or_fail(DbgMsg, DbgVal, exception_throw).
  
  -spec log_or_fail(DbgMsg::string(), DbgVal::[term()],
                    Reason::unknown_message | exception_throw) -> ok.
  
negative.code:                           UState ->
                                DefaultHandler
                        end,
              T2State = case lists:keyfind(exception_subscription, 1, Options) of
                            {exception_subscription, Subs} ->
                                gc_set_exc_subs(T1State, Subs);
                            _ ->
                                T1State
                        end,
              {UState, gc_set_hand(T2State, Handler)}
          catch
              % If init throws up, send 'started' to the supervisor but exit.
              % The supervisor will try to restart the process as it is watching
  