mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-05-24 02:37:23 +08:00
PR python/19293 - invalidate frame cache when unwinders change
PR python/19293 notes that when a Python unwinder is disabled, the frame cache is not invalidated. This means that disabling an unwinder doesn't have any immediate effect -- but in my experience it's often the case that I want to enable or disable an unwinder in order to see what happens. This patch adds a new gdb.invalidate_cached_frames function and arranges for the relevant bits of library code to call it. I've only partially documented this function, considering a warning sufficient without going into all the reasons ordinary code should not call it. The name of the new function was taken from a comment in frame.h next to reinit_frame_cache. No new test as I think the updates to the existing test are sufficient to show that the code is working as intended. Built and regtested on x86-64 Fedora 23. 2016-07-12 Tom Tromey <tom@tromey.com> PR python/19293: * python/lib/gdb/command/unwinders.py (do_enable_unwinder): Call gdb.invalidate_cached_frames. * python/lib/gdb/unwinder.py (register_unwinder): Call gdb.invalidate_cached_frames. * python/python.c (gdbpy_invalidate_cached_frames): New function. (python_GdbMethods): Add entry for invalidate_cached_frames. 2016-07-12 Tom Tromey <tom@tromey.com> PR python/19293: * python.texi (Frames In Python): Document gdb.invalidate_cached_frames. 2016-07-12 Tom Tromey <tom@tromey.com> PR python/19293: * gdb.python/py-unwind-maint.exp: Update tests.
This commit is contained in:
@ -885,6 +885,15 @@ gdbpy_find_pc_line (PyObject *self, PyObject *args)
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Implementation of gdb.invalidate_cached_frames. */
|
||||
|
||||
static PyObject *
|
||||
gdbpy_invalidate_cached_frames (PyObject *self, PyObject *args)
|
||||
{
|
||||
reinit_frame_cache ();
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
/* Read a file as Python code.
|
||||
This is the extension_language_script_ops.script_sourcer "method".
|
||||
FILE is the file to load. FILENAME is name of the file FILE.
|
||||
@ -2071,6 +2080,12 @@ Return the selected inferior object." },
|
||||
{ "inferiors", gdbpy_inferiors, METH_NOARGS,
|
||||
"inferiors () -> (gdb.Inferior, ...).\n\
|
||||
Return a tuple containing all inferiors." },
|
||||
|
||||
{ "invalidate_cached_frames", gdbpy_invalidate_cached_frames, METH_NOARGS,
|
||||
"invalidate_cached_frames () -> None.\n\
|
||||
Invalidate any cached frame objects in gdb.\n\
|
||||
Intended for internal use only." },
|
||||
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user