forked from Imagelibrary/binutils-gdb
Report Python errors coming from gdb.post_event
PR python/14062 points out that errors coming from the gdb.post_event callback are not reported. This can make it hard to understand why your Python code in gdb isn't working. Because users have control over whether exceptions are printed at all, it seems good to simply have post_event report errors in the usual way. 2018-09-23 Tom Tromey <tom@tromey.com> PR python/14062: * python/python.c (gdbpy_run_events): Do not ignore exceptions. gdb/testsuite/ChangeLog 2018-09-23 Tom Tromey <tom@tromey.com> PR python/14062: * gdb.python/python.exp: Add test for post_event error.
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2018-09-23 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
|
PR python/14062:
|
||||||
|
* python/python.c (gdbpy_run_events): Do not ignore exceptions.
|
||||||
|
|
||||||
2018-09-23 Tom Tromey <tom@tromey.com>
|
2018-09-23 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
PR python/18170:
|
PR python/18170:
|
||||||
|
|||||||
@@ -987,10 +987,9 @@ gdbpy_run_events (int error, gdb_client_data client_data)
|
|||||||
if (gdbpy_event_list == NULL)
|
if (gdbpy_event_list == NULL)
|
||||||
gdbpy_event_list_end = &gdbpy_event_list;
|
gdbpy_event_list_end = &gdbpy_event_list;
|
||||||
|
|
||||||
/* Ignore errors. */
|
|
||||||
gdbpy_ref<> call_result (PyObject_CallObject (item->event, NULL));
|
gdbpy_ref<> call_result (PyObject_CallObject (item->event, NULL));
|
||||||
if (call_result == NULL)
|
if (call_result == NULL)
|
||||||
PyErr_Clear ();
|
gdbpy_print_stack ();
|
||||||
|
|
||||||
Py_DECREF (item->event);
|
Py_DECREF (item->event);
|
||||||
xfree (item);
|
xfree (item);
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
2018-09-23 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
|
PR python/14062:
|
||||||
|
* gdb.python/python.exp: Add test for post_event error.
|
||||||
|
|
||||||
2018-09-23 Tom Tromey <tom@tromey.com>
|
2018-09-23 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
PR python/18170:
|
PR python/18170:
|
||||||
|
|||||||
@@ -134,7 +134,18 @@ gdb_py_test_multiple "post event insertion" \
|
|||||||
"end" ""
|
"end" ""
|
||||||
|
|
||||||
gdb_test "python print (someVal)" "1" "test post event execution"
|
gdb_test "python print (someVal)" "1" "test post event execution"
|
||||||
gdb_test "python gdb.post_event(str(1))" "RuntimeError: Posted event is not callable.*" "test non callable class"
|
gdb_test "python gdb.post_event(str(1))" "RuntimeError: Posted event is not callable.*" \
|
||||||
|
"test non callable class"
|
||||||
|
|
||||||
|
send_gdb "python gdb.post_event(lambda: invalid())\n"
|
||||||
|
gdb_expect {
|
||||||
|
-re "name 'invalid' is not defined" {
|
||||||
|
pass "test post_event error on receipt"
|
||||||
|
}
|
||||||
|
default {
|
||||||
|
fail "test post_event error on receipt"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# Test (no) pagination of the executed command.
|
# Test (no) pagination of the executed command.
|
||||||
gdb_test "show height" {Number of lines gdb thinks are in a page is unlimited\.}
|
gdb_test "show height" {Number of lines gdb thinks are in a page is unlimited\.}
|
||||||
|
|||||||
Reference in New Issue
Block a user