class_docstr: Handles launching, suspending signals, and potentially dealing with terminal issues.
code: def start(self):
      with self._is_running_lock:
          assert not self._is_running
          assert not self._STARTED_INSTANCE
  
          kwargs = self.popen_kwargs()
          self.did_start_new_session = kwargs.setdefault(
              "start_new_session", True
          )
  
          self.old_termios = termios.tcgetattr(sys.stdin.fileno())
          self.popen = subprocess.Popen(**kwargs)
          self._is_running = True
          self.old_sigint_handler = signal.signal(
              signal.SIGINT, self._sigint_handler
          )
          self.old_sigusr1_handler = signal.signal(
              signal.SIGUSR1, self._sigusr1_handler
          )
          self.__class__._STARTED_INSTANCE = self
          try:
              self.child_pgid = os.getpgid(self.popen.pid)
          except Exception:
              self.stop()
              raise
          with self._is_running_lock:
              self._is_child_alive = True
          t = threading.Thread(target=self._wait_for_child)
          t.daemon = True
          t.start()
  
imports: import atexit
  import abc
  import errno
  import logging
  import os
  import shlex
  import signal
  import subprocess
  import sys
  import termios
  import threading
  import time
  import psutil
  from .._ffi import register_func
  from .None import class_factory
  from .None import transport
  from .transport.file_descriptor import FdTransport
label_desc: Use image node_id 8 for calling the GdbDebugger obj's underlying member method code with example usage: obj.start() without return types