class DEBUGGER__::Config

def update conf

def update conf
  old_conf = self.class.instance_variable_get(:@config) || {}
  # TODO: Use Ractor.make_shareable(conf)
  self.class.instance_variable_set(:@config, conf.freeze)
  # Post process
  if_updated old_conf, conf, :keep_alloc_site do |old, new|
    if new
      require 'objspace'
      ObjectSpace.trace_object_allocations_start
    end
    if old && !new
      ObjectSpace.trace_object_allocations_stop
    end
  end
  if_updated old_conf, conf, :postmortem do |_, new_p|
    if defined?(SESSION)
      SESSION.postmortem = new_p
    end
  end
  if_updated old_conf, conf, :sigdump_sig do |old_sig, new_sig|
    setup_sigdump old_sig, new_sig
  end
  if_updated old_conf, conf, :no_sigint_hook do |old, new|
    if defined?(SESSION)
      SESSION.set_no_sigint_hook old, new
    end
  end
end