code: def Kill(self):
      
      try:
        if self.is_running:
          self.Detach()
        if self._Execute('__kill__') == '__kill_ack__':
          # acknowledged, let's give it some time to die in peace
          time.sleep(0.1)
      except (TimeoutError, ProxyError):
        logging.debug('Termination request not acknowledged, killing gdb.')
      if self.is_running:
        # death pill didn't seem to work. We don't want the inferior to get killed
        # the next time it hits a dangling breakpoint, so we send a SIGINT to gdb,
        # which makes it disable instruction breakpoints for the time being.
        os.kill(self._process.pid, signal.SIGINT)
        # Since SIGINT has higher priority (with signal number 2) than SIGTERM
        # (signal 15), SIGTERM cannot preempt the signal handler for SIGINT.
        self._process.terminate()
        self._process.wait()
      self._errfile_r.close()
      self._outfile_r.close()
docs: Send death pill to Gdb and forcefully kill it if that doesn't work.