diff options
author | Tom Tromey <tom@tromey.com> | 2018-09-15 01:09:22 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-09-23 23:15:12 -0600 |
commit | ae778caf097e08497f2e9218cf68b254b8da38f1 (patch) | |
tree | 4d9491413ed523cd72c541def36f1bafba954dca /gdb/testsuite/gdb.python/py-parameter.exp | |
parent | 2b4ad2fe4300489fd40dbe07e1675ff1cf0bee58 (diff) | |
download | binutils-ae778caf097e08497f2e9218cf68b254b8da38f1.zip binutils-ae778caf097e08497f2e9218cf68b254b8da38f1.tar.gz binutils-ae778caf097e08497f2e9218cf68b254b8da38f1.tar.bz2 |
Allow setting a parameter to raise gdb.GdbError
A convention in the Python layer is that raising a gdb.GdbError will
not print the Python stack -- instead the exception is treated as any
other gdb exception.
PR python/18852 asks that this treatment be extended the the
get_set_value method of gdb.Parameter. This makes sense, because it
lets Python-created parameters act like gdb parameters.
2018-09-23 Tom Tromey <tom@tromey.com>
PR python/18852:
* python/py-param.c (get_set_value): Use gdbpy_handle_exception.
gdb/doc/ChangeLog
2018-09-23 Tom Tromey <tom@tromey.com>
PR python/18852:
* python.texi (Parameters In Python): Document exception behavior
of get_set_string.
gdb/testsuite/ChangeLog
2018-09-23 Tom Tromey <tom@tromey.com>
PR python/18852:
* gdb.python/py-parameter.exp: Add test for parameter that throws
on "set".
Diffstat (limited to 'gdb/testsuite/gdb.python/py-parameter.exp')
-rw-r--r-- | gdb/testsuite/gdb.python/py-parameter.exp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.python/py-parameter.exp b/gdb/testsuite/gdb.python/py-parameter.exp index 0508544..9a36e63 100644 --- a/gdb/testsuite/gdb.python/py-parameter.exp +++ b/gdb/testsuite/gdb.python/py-parameter.exp @@ -203,3 +203,18 @@ foreach kind {PARAM_ZUINTEGER PARAM_ZUINTEGER_UNLIMITED} { "check that PARAM_ZUINTEGER value is -1 after setting" } } + +gdb_py_test_multiple "Throwing gdb parameter" \ + "python" "" \ + "class TestThrowParam (gdb.Parameter):" "" \ + " def __init__ (self, name):" "" \ + " super (TestThrowParam, self).__init__ (name, gdb.COMMAND_DATA, gdb.PARAM_STRING)" "" \ + " self.value = True" "" \ + " def get_set_string (self):" "" \ + " raise gdb.GdbError('Ordinary gdb error')" "" \ + "test_throw_param = TestThrowParam ('print test-throw-param')" ""\ + "end" + +gdb_test "set print test-throw-param whoops" \ + "Ordinary gdb error" \ + "gdb.GdbError does not show Python stack" |