code: def get_debug():
      
      try:
          import IPython
  
      except ImportError:
          debug = None
  
      else:
          old_excepthook = sys.excepthook
  
          def debug(frame=None):
              if IPython.__version__ >= '0.11':
                  from IPython.core.debugger import Pdb
  
                  try:
                      ip = get_ipython()
  
                  except NameError:
                      from IPython.frontend.terminal.embed \
                           import InteractiveShellEmbed
                      ip = InteractiveShellEmbed()
  
                  colors = ip.colors
  
              else:
                  from IPython.Debugger import Pdb
                  from IPython.Shell import IPShell
                  from IPython import ipapi
  
                  ip = ipapi.get()
                  if ip is None:
                      IPShell(argv=[''])
                      ip = ipapi.get()
  
                  colors = ip.options.colors
  
              sys.excepthook = old_excepthook
  
              if frame is None:
                  frame = sys._getframe().f_back
  
              Pdb(colors).set_trace(frame)
  
      if debug is None:
          import pdb
          debug = pdb.set_trace
  
      debug.__doc__ = """
      Start debugger on line where it is called, roughly equivalent to::
  
          import pdb; pdb.set_trace()
  
      First, this function tries to start an `IPython`-enabled
      debugger using the `IPython` API.
  
      When this fails, the plain old `pdb` is used instead.
      """
  
      return debug
docs: Utility function providing ``debug()`` function.