Start listening on the given gRPC port.

    This method of an instance of DebuggerPlugin can be invoked at most once.
    This method is not thread safe.

    Args:
      grpc_port: port number to listen at.

    Raises:
      ValueError: If this instance is already listening at a gRPC port.

def listen(self, grpc_port):
    """Start listening on the given gRPC port.

    This method of an instance of DebuggerPlugin can be invoked at most once.
    This method is not thread safe.

    Args:
      grpc_port: port number to listen at.

    Raises:
      ValueError: If this instance is already listening at a gRPC port.
    """
    if self._grpc_port:
      raise ValueError(
          "This DebuggerPlugin instance is already listening at gRPC port %d" %
          self._grpc_port)
    self._grpc_port = grpc_port

    sys.stderr.write('Creating DebuggerDataServer at port %d and logdir %s\n' %
                     (self._grpc_port, self._logdir))
    sys.stderr.flush()
    self._debugger_data_server = debugger_server_lib.DebuggerDataServer(
        self._grpc_port, self._logdir)

    threading.Thread(target=self._debugger_data_server.
                     start_the_debugger_data_receiving_server).start()