From 1925bba80edd37c2ef90ef1d2c599dfc2fc17f72 Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Thu, 4 Jan 2024 10:01:24 +0000 Subject: gdb/python: add gdb.InferiorThread.__repr__() method Add a gdb.InferiorThread.__repr__() method. Before this patch we would see output like this: (gdb) pi >>> gdb.selected_thread() After this patch, we now see: (gdb) pi >>> gdb.selected_thread() More verbose, but, I hope, more useful. If the gdb.InferiorThread becomes invalid, then we will see: (gdb) pi >>> invalid_thread_variable Which is inline with how other invalid objects are displayed. Approved-By: Tom Tromey --- gdb/python/py-infthread.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'gdb/python') diff --git a/gdb/python/py-infthread.c b/gdb/python/py-infthread.c index 632984d..b5887c7 100644 --- a/gdb/python/py-infthread.c +++ b/gdb/python/py-infthread.c @@ -337,6 +337,23 @@ thpy_thread_handle (PyObject *self, PyObject *args) return object; } +/* Implement repr() for gdb.InferiorThread. */ + +static PyObject * +thpy_repr (PyObject *self) +{ + thread_object *thread_obj = (thread_object *) self; + + if (thread_obj->thread == nullptr) + return gdb_py_invalid_object_repr (self); + + thread_info *thr = thread_obj->thread; + return PyUnicode_FromFormat ("<%s id=%s target-id=\"%s\">", + Py_TYPE (self)->tp_name, + print_full_thread_id (thr), + target_pid_to_str (thr->ptid).c_str ()); +} + /* Return a reference to a new Python object representing a ptid_t. The object is a tuple containing (pid, lwp, tid). */ PyObject * @@ -456,7 +473,7 @@ PyTypeObject thread_object_type = 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_compare*/ - 0, /*tp_repr*/ + thpy_repr, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ -- cgit v1.1