docs: def _runscript(self, filename):
          """ Launchs debugged program execution using the execfile() builtin.
              
          We reset and setup the __main__ dict to allow the script to run
          in __main__ namespace. This is required for imports from __main__ to 
          run correctly.
          
          Note that this has the effect to wipe IKP3db's vars created at this point.
          """
          import __main__
          __main__.__dict__.clear()
          __main__.__dict__.update({"__name__"    : "__main__",
                                    "__file__"    : filename,
                                    "__builtins__": __builtins__,})
  
          self.mainpyfile = self.canonic(filename)
          #statement = 'execfile(%r)\n' % filename
          statement = "exec(compile(open('%s').read(), '%s', 'exec'))" % (filename, filename,)
          
          globals = __main__.__dict__
          locals = globals
  
          # When IKP3db sets tracing, a number of call and line events happens
          # BEFORE debugger even reaches user's code (and the exact sequence of
          # events depends on python version). So we take special measures to
          # avoid stopping before we reach the main script (see reset(),
          # _tracer() and _line_tracer() methods for details).
          self.reset()
          self.execution_started = True
          self.status = 'running'
          # Turn on limited tracing by setting trace function for 
          # current_thread only. This allow self.frame_beginning to be set at
          # first tracer "call" invocation.
          sys.settrace(self._tracer)
  
          try:
              exec(statement, globals, locals)
          except IKPdbQuit:
              pass
          finally:
              self.status = 'terminated'
              self.disable_tracing()