Add Python InferiorThread.inferior attribute
So a script can easily get at a thread's inferior and its number. gdb/ChangeLog: 2016-01-13 Pedro Alves <palves@redhat.com> * NEWS: Mention InferiorThread.inferior. * python/py-infthread.c (thpy_get_inferior): New. (thread_object_getset): Register "inferior". gdb/testsuite/ChangeLog: 2016-01-13 Pedro Alves <palves@redhat.com> * gdb.python/py-infthread.exp: Test InferiorThread.inferior. gdb/doc/ChangeLog: 2016-01-13 Pedro Alves <palves@redhat.com> * python.texi (Threads In Python): Document InferiorThread.inferior.
This commit is contained in:
parent
e3940304fe
commit
8465445732
7 changed files with 42 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
2016-01-13 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* NEWS: Mention InferiorThread.inferior.
|
||||
* python/py-infthread.c (thpy_get_inferior): New.
|
||||
(thread_object_getset): Register "inferior".
|
||||
|
||||
2016-01-13 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* NEWS: Mention $_inferior.
|
||||
|
|
5
gdb/NEWS
5
gdb/NEWS
|
@ -175,6 +175,11 @@ show remote catch-syscall-packet
|
|||
format. It outputs data in hexadecimal format with zero-padding on the
|
||||
left.
|
||||
|
||||
* Python Scripting
|
||||
|
||||
** gdb.InferiorThread objects have a new attribute "inferior", which
|
||||
is the Inferior object the thread belongs to.
|
||||
|
||||
*** Changes in GDB 7.10
|
||||
|
||||
* Support for process record-replay and reverse debugging on aarch64*-linux*
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2016-01-13 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* python.texi (Threads In Python): Document
|
||||
InferiorThread.inferior.
|
||||
|
||||
2016-01-13 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* gdb.texinfo (Inferiors and Programs): Document the $_inferior
|
||||
|
|
|
@ -3006,6 +3006,11 @@ Either the LWPID or TID may be 0, which indicates that the operating system
|
|||
does not use that identifier.
|
||||
@end defvar
|
||||
|
||||
@defvar InferiorThread.inferior
|
||||
The inferior this thread belongs to. This attribute is represented as
|
||||
a @code{gdb.Inferior} object. This attribute is not writable.
|
||||
@end defvar
|
||||
|
||||
A @code{gdb.InferiorThread} object has the following methods:
|
||||
|
||||
@defun InferiorThread.is_valid ()
|
||||
|
|
|
@ -140,6 +140,18 @@ thpy_get_ptid (PyObject *self, void *closure)
|
|||
return gdbpy_create_ptid_object (thread_obj->thread->ptid);
|
||||
}
|
||||
|
||||
/* Getter for InferiorThread.inferior -> Inferior. */
|
||||
|
||||
static PyObject *
|
||||
thpy_get_inferior (PyObject *self, void *ignore)
|
||||
{
|
||||
thread_object *thread_obj = (thread_object *) self;
|
||||
|
||||
THPY_REQUIRE_VALID (thread_obj);
|
||||
|
||||
return thread_obj->inf_obj;
|
||||
}
|
||||
|
||||
/* Implementation of InferiorThread.switch ().
|
||||
Makes this the GDB selected thread. */
|
||||
|
||||
|
@ -285,6 +297,8 @@ static PyGetSetDef thread_object_getset[] =
|
|||
{ "num", thpy_get_num, NULL, "ID of the thread, as assigned by GDB.", NULL },
|
||||
{ "ptid", thpy_get_ptid, NULL, "ID of the thread, as assigned by the OS.",
|
||||
NULL },
|
||||
{ "inferior", thpy_get_inferior, NULL,
|
||||
"The Inferior object this thread belongs to.", NULL },
|
||||
|
||||
{ NULL }
|
||||
};
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2016-01-13 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* gdb.python/py-infthread.exp: Test InferiorThread.inferior.
|
||||
|
||||
2016-01-13 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* gdb.base/default.exp: Expect $_inferior as well.
|
||||
|
|
|
@ -44,6 +44,9 @@ gdb_test "python print (t0)" "\\<gdb.InferiorThread object at 0x\[\[:xdigit:\]\]
|
|||
gdb_test "python print ('result = %s' % t0.num)" " = 1" "test InferiorThread.num"
|
||||
gdb_test "python print ('result = %s' % str (t0.ptid))" " = \\(\[0-9\]+, \[0-9\]+, \[0-9\]+\\)" "test InferiorThread.ptid"
|
||||
|
||||
gdb_py_test_silent_cmd "python i0 = t0.inferior" "test InferiorThread.inferior" 1
|
||||
gdb_test "python print ('result = %s' % i0.num)" " = 1" "test Inferior.num"
|
||||
|
||||
gdb_py_test_silent_cmd "python name = gdb.selected_thread().name" \
|
||||
"get supplied name of current thread" 1
|
||||
gdb_py_test_silent_cmd "python gdb.selected_thread().name = 'hibob'" \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue