mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-02-13 21:49:40 +00:00
gdb
PR python/12367: * NEWS: Add item. * python/python.c (GdbMethods): Add "newest_frame" method. * python/python-internal.h (gdbpy_newest_frame): Declare. * python/py-frame.c (gdbpy_newest_frame): New function. gdb/doc * gdb.texinfo (Frames In Python): Document gdb.newest_thread. gdb/testsuite * gdb.python/py-frame.exp: Test gdb.newest_frame.
This commit is contained in:
parent
a255712f65
commit
d8e227793f
@ -1,3 +1,11 @@
|
||||
2011-01-06 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
PR python/12367:
|
||||
* NEWS: Add item.
|
||||
* python/python.c (GdbMethods): Add "newest_frame" method.
|
||||
* python/python-internal.h (gdbpy_newest_frame): Declare.
|
||||
* python/py-frame.c (gdbpy_newest_frame): New function.
|
||||
|
||||
2010-01-06 Paul Pluzhnikov <ppluzhnikov@google.com>
|
||||
|
||||
* jit.h (struct jit_code_entry): use ULONGEST for symfile_size.
|
||||
|
3
gdb/NEWS
3
gdb/NEWS
@ -43,6 +43,9 @@
|
||||
|
||||
** gdb.parameter("directories") is now available.
|
||||
|
||||
** New function gdb.newest_frame returns the newest frame in the
|
||||
selected thread.
|
||||
|
||||
* C++ Improvements:
|
||||
|
||||
** GDB now puts template parameters in scope when debugging in an
|
||||
|
@ -1,3 +1,7 @@
|
||||
2011-01-06 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* gdb.texinfo (Frames In Python): Document gdb.newest_thread.
|
||||
|
||||
2010-01-06 Paul Pluzhnikov <ppluzhnikov@google.com>
|
||||
|
||||
* gdb.texinfo (Debugging Output): Document "set debug jit".
|
||||
|
@ -22519,6 +22519,11 @@ The following frame-related functions are available in the @code{gdb} module:
|
||||
Return the selected frame object. (@pxref{Selection,,Selecting a Frame}).
|
||||
@end defun
|
||||
|
||||
@findex gdb.newest_frame
|
||||
@defun newest_frame
|
||||
Return the newest frame object for the selected thread.
|
||||
@end defun
|
||||
|
||||
@defun frame_stop_reason_string reason
|
||||
Return a string explaining the reason why @value{GDBN} stopped unwinding
|
||||
frames, as expressed by the given @var{reason} code (an integer, see the
|
||||
|
@ -498,6 +498,26 @@ frapy_select (PyObject *self, PyObject *args)
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
/* Implementation of gdb.newest_frame () -> gdb.Frame.
|
||||
Returns the newest frame object. */
|
||||
|
||||
PyObject *
|
||||
gdbpy_newest_frame (PyObject *self, PyObject *args)
|
||||
{
|
||||
struct frame_info *frame;
|
||||
PyObject *frame_obj = NULL; /* Initialize to appease gcc warning. */
|
||||
volatile struct gdb_exception except;
|
||||
|
||||
TRY_CATCH (except, RETURN_MASK_ALL)
|
||||
{
|
||||
frame = get_current_frame ();
|
||||
frame_obj = frame_info_to_frame_object (frame);
|
||||
}
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
|
||||
return frame_obj;
|
||||
}
|
||||
|
||||
/* Implementation of gdb.selected_frame () -> gdb.Frame.
|
||||
Returns the selected frame object. */
|
||||
|
||||
|
@ -110,6 +110,7 @@ PyObject *gdbpy_history (PyObject *self, PyObject *args);
|
||||
PyObject *gdbpy_breakpoints (PyObject *, PyObject *);
|
||||
PyObject *gdbpy_frame_stop_reason_string (PyObject *, PyObject *);
|
||||
PyObject *gdbpy_lookup_symbol (PyObject *self, PyObject *args, PyObject *kw);
|
||||
PyObject *gdbpy_newest_frame (PyObject *self, PyObject *args);
|
||||
PyObject *gdbpy_selected_frame (PyObject *self, PyObject *args);
|
||||
PyObject *gdbpy_block_for_pc (PyObject *self, PyObject *args);
|
||||
PyObject *gdbpy_lookup_type (PyObject *self, PyObject *args, PyObject *kw);
|
||||
|
@ -1121,6 +1121,9 @@ static PyMethodDef GdbMethods[] =
|
||||
{ "objfiles", gdbpy_objfiles, METH_NOARGS,
|
||||
"Return a sequence of all loaded objfiles." },
|
||||
|
||||
{ "newest_frame", gdbpy_newest_frame, METH_NOARGS,
|
||||
"newest_frame () -> gdb.Frame.\n\
|
||||
Return the newest frame object." },
|
||||
{ "selected_frame", gdbpy_selected_frame, METH_NOARGS,
|
||||
"selected_frame () -> gdb.Frame.\n\
|
||||
Return the selected frame object." },
|
||||
|
@ -1,3 +1,7 @@
|
||||
2011-01-06 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* gdb.python/py-frame.exp: Test gdb.newest_frame.
|
||||
|
||||
2011-01-06 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* gdb.ada/array_bounds.exp, gdb.ada/array_return.exp,
|
||||
|
@ -73,11 +73,18 @@ gdb_test "python print bf1.read_var(\"i\", sb).type" "int" "test int i"
|
||||
|
||||
gdb_breakpoint "f2"
|
||||
gdb_continue_to_breakpoint "breakpoint at f2"
|
||||
gdb_py_test_silent_cmd "python bframe = gdb.selected_frame()" \
|
||||
"get bottommost frame" 0
|
||||
gdb_test "up" ".*" ""
|
||||
|
||||
gdb_py_test_silent_cmd "python f1 = gdb.selected_frame ()" "get second frame" 0
|
||||
gdb_py_test_silent_cmd "python f0 = f1.newer ()" "get first frame" 0
|
||||
|
||||
gdb_test "python print f1 == gdb.newest_frame()" False \
|
||||
"selected frame -vs- newest frame"
|
||||
gdb_test "python print bframe == gdb.newest_frame()" True \
|
||||
"newest frame -vs- newest frame"
|
||||
|
||||
gdb_test "python print 'result =', f0 == f1" " = False" "test equality comparison (false)"
|
||||
gdb_test "python print 'result =', f0 == f0" " = True" "test equality comparison (true)"
|
||||
gdb_test "python print 'result =', f0 != f1" " = True" "test inequality comparison (true)"
|
||||
|
Loading…
x
Reference in New Issue
Block a user