aboutsummaryrefslogtreecommitdiff
path: root/gdb/python
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2024-01-04 10:01:24 +0000
committerAndrew Burgess <aburgess@redhat.com>2024-01-12 11:21:26 +0000
commit1925bba80edd37c2ef90ef1d2c599dfc2fc17f72 (patch)
tree5cef675497c10a2693c11c5997cab71195baa94f /gdb/python
parentaef117b7374053099099600ded2f4eaa2c450327 (diff)
downloadbinutils-1925bba80edd37c2ef90ef1d2c599dfc2fc17f72.zip
binutils-1925bba80edd37c2ef90ef1d2c599dfc2fc17f72.tar.gz
binutils-1925bba80edd37c2ef90ef1d2c599dfc2fc17f72.tar.bz2
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() <gdb.InferiorThread object at 0x7f4dcc49b970> After this patch, we now see: (gdb) pi >>> gdb.selected_thread() <gdb.InferiorThread id=1.2 target-id="Thread 0x7ffff7da1700 (LWP 458134)"> More verbose, but, I hope, more useful. If the gdb.InferiorThread becomes invalid, then we will see: (gdb) pi >>> invalid_thread_variable <gdb.InferiorThread (invalid)> Which is inline with how other invalid objects are displayed. Approved-By: Tom Tromey <tom@tromey.com>
Diffstat (limited to 'gdb/python')
-rw-r--r--gdb/python/py-infthread.c19
1 files changed, 18 insertions, 1 deletions
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*/