class_docstr: The debugger class.
class_docstr_tok: ["The","debugger","class","."]
docstr: Start the debugger.
docstr_tok: ["Start","the","debugger","."]
code: def start(self):
      """Start the debugger."""
      if not self.debugpy_initialized:
          tmp_dir = get_tmp_directory()
          if not Path(tmp_dir).exists():
              Path(tmp_dir).mkdir(parents=True)
          host, port = self.debugpy_client.get_host_port()
          code = "import debugpy;"
          code += 'debugpy.listen(("' + host + '",' + port + "))"
          content = {"code": code, "silent": True}
          self.session.send(
              self.shell_socket,
              "execute_request",
              content,
              None,
              (self.shell_socket.getsockopt(ROUTING_ID)),
          )
  
          ident, msg = self.session.recv(self.shell_socket, mode=0)
          self.debugpy_initialized = msg["content"]["status"] == "ok"
  
      # Don't remove leading empty lines when debugging so the breakpoints are correctly positioned
      cleanup_transforms = (
          get_ipython().input_transformer_manager.cleanup_transforms
      )
      if leading_empty_lines in cleanup_transforms:
          index = cleanup_transforms.index(leading_empty_lines)
          self._removed_cleanup[index] = cleanup_transforms.pop(index)
  
      self.debugpy_client.connect_tcp_socket()
      return self.debugpy_initialized
  
imports: import os
  import re
  import sys
  import typing
  from pathlib import Path
  import zmq
  from IPython.core.getipython import get_ipython
  from IPython.core.inputtransformer2 import leading_empty_lines
  from tornado.locks import Event
  from tornado.queues import Queue
  from zmq.utils import jsonapi
  from .compiler import get_file_name, get_tmp_directory, get_tmp_hash_seed
label_desc: Use image node_id 6 for calling the Debugger obj's underlying member method code with example usage: obj.start() and returns: self