Index: kernel/generic/include/udebug/udebug.h
===================================================================
--- kernel/generic/include/udebug/udebug.h	(revision 80487bc530704837cb7bf8a502bf18db19969479)
+++ kernel/generic/include/udebug/udebug.h	(revision b79d450c48dd4e1488486327295df7c5c51e93b7)
@@ -107,4 +107,17 @@
  */
 UDEBUG_M_THREAD_READ,
+
+/** Read the name of the debugged task.
+ *
+ * - ARG2 - destination address in the caller's address space
+ * - ARG3 - size of receiving buffer in bytes
+ *
+ * The kernel fills the buffer with a non-terminated string.
+ *
+ * - ARG2 - number of bytes that were actually copied
+ * - ARG3 - number of bytes of the complete data
+ *
+ */
+UDEBUG_M_NAME_READ,
 
 /** Read the list of the debugged task's address space areas.
Index: kernel/generic/include/udebug/udebug_ops.h
===================================================================
--- kernel/generic/include/udebug/udebug_ops.h	(revision 80487bc530704837cb7bf8a502bf18db19969479)
+++ kernel/generic/include/udebug/udebug_ops.h	(revision b79d450c48dd4e1488486327295df7c5c51e93b7)
@@ -47,4 +47,5 @@
 int udebug_thread_read(void **buffer, size_t buf_size, size_t *stored,
     size_t *needed);
+int udebug_name_read(char **data, size_t *data_size);
 int udebug_args_read(thread_t *t, void **buffer);
 
Index: kernel/generic/src/udebug/udebug_ipc.c
===================================================================
--- kernel/generic/src/udebug/udebug_ipc.c	(revision 80487bc530704837cb7bf8a502bf18db19969479)
+++ kernel/generic/src/udebug/udebug_ipc.c	(revision b79d450c48dd4e1488486327295df7c5c51e93b7)
@@ -198,4 +198,50 @@
 	IPC_SET_ARG3(call->data, needed);
 	call->buffer = buffer;
+
+	ipc_answer(&TASK->kb.box, call);
+}
+
+/** Process a NAME_READ call.
+ *
+ * Returns a string containing the name of the task.
+ *
+ * @param call	The call structure.
+ */
+static void udebug_receive_name_read(call_t *call)
+{
+	unative_t uspace_addr;
+	unative_t to_copy;
+	size_t data_size;
+	size_t buf_size;
+	void *data;
+
+	uspace_addr = IPC_GET_ARG2(call->data);	/* Destination address */
+	buf_size = IPC_GET_ARG3(call->data);	/* Dest. buffer size */
+
+	/*
+	 * Read task name.
+	 */
+	udebug_name_read((char **) &data, &data_size);
+
+	/* Copy MAX(buf_size, data_size) bytes */
+
+	if (buf_size > data_size)
+		to_copy = data_size;
+	else
+		to_copy = buf_size;
+
+	/*
+	 * Make use of call->buffer to transfer data to caller's userspace
+	 */
+
+	IPC_SET_RETVAL(call->data, 0);
+	/* ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that
+	   same code in process_answer() can be used 
+	   (no way to distinguish method in answer) */
+	IPC_SET_ARG1(call->data, uspace_addr);
+	IPC_SET_ARG2(call->data, to_copy);
+
+	IPC_SET_ARG3(call->data, data_size);
+	call->buffer = data;
 
 	ipc_answer(&TASK->kb.box, call);
@@ -409,4 +455,7 @@
 		udebug_receive_thread_read(call);
 		break;
+	case UDEBUG_M_NAME_READ:
+		udebug_receive_name_read(call);
+		break;
 	case UDEBUG_M_AREAS_READ:
 		udebug_receive_areas_read(call);
Index: kernel/generic/src/udebug/udebug_ops.c
===================================================================
--- kernel/generic/src/udebug/udebug_ops.c	(revision 80487bc530704837cb7bf8a502bf18db19969479)
+++ kernel/generic/src/udebug/udebug_ops.c	(revision b79d450c48dd4e1488486327295df7c5c51e93b7)
@@ -46,4 +46,5 @@
 #include <errno.h>
 #include <print.h>
+#include <string.h>
 #include <syscall/copy.h>
 #include <ipc/ipc.h>
@@ -439,4 +440,27 @@
 }
 
+/** Read task name.
+ *
+ * Returns task name as non-terminated string in a newly allocated buffer.
+ * Also returns the size of the data.
+ *
+ * @param data		Place to store pointer to newly allocated block.
+ * @param data_size	Place to store size of the data.
+ *
+ * @returns		EOK.
+ */
+int udebug_name_read(char **data, size_t *data_size)
+{
+	size_t name_size;
+
+	name_size = str_size(TASK->name) + 1;
+	*data = malloc(name_size, 0);
+	*data_size = name_size;
+
+	memcpy(*data, TASK->name, name_size);
+
+	return 0;
+}
+
 /** Read the arguments of a system call.
  *
