diff options
-rw-r--r-- | gdb/doc/python.texi | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-events.exp | 20 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-events.py | 5 |
3 files changed, 28 insertions, 2 deletions
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi index d8f682a..b123b24 100644 --- a/gdb/doc/python.texi +++ b/gdb/doc/python.texi @@ -3202,7 +3202,10 @@ Here is an example: @smallexample def exit_handler (event): print ("event type: exit") - print ("exit code: %d" % (event.exit_code)) + if hasattr (event, 'exit_code'): + print ("exit code: %d" % (event.exit_code)) + else: + print ("exit code not available") gdb.events.exited.connect (exit_handler) @end smallexample diff --git a/gdb/testsuite/gdb.python/py-events.exp b/gdb/testsuite/gdb.python/py-events.exp index d6dc9fd..7891524 100644 --- a/gdb/testsuite/gdb.python/py-events.exp +++ b/gdb/testsuite/gdb.python/py-events.exp @@ -280,3 +280,23 @@ with_test_prefix "inferior continue exit" { gdb_test "continue" "exited with code.*" "continue to exit" gdb_test "print \$_foo" "= 2" "check foo after start continue" } + +# Check that when GDB exits, we see gdb.ExitedEvent objects with no +# 'exit_code' attribute. +with_test_prefix "gdb exiting" { + set saw_inferior_exit 0 + gdb_test_multiple "quit" "" { + -re "Quit anyway\\? \\(y or n\\) $" { + send_gdb "y\n" + exp_continue + } + -re "event type: exit\r\nexit code: not-present\r\nexit inf: $decimal\r\nexit pid: $decimal\r\ndir ok: False\r\n" { + incr saw_inferior_exit + exp_continue + } + eof { + gdb_assert { $saw_inferior_exit == 2 } + pass $gdb_test_name + } + } +} diff --git a/gdb/testsuite/gdb.python/py-events.py b/gdb/testsuite/gdb.python/py-events.py index 1524267..b21f562 100644 --- a/gdb/testsuite/gdb.python/py-events.py +++ b/gdb/testsuite/gdb.python/py-events.py @@ -45,7 +45,10 @@ def breakpoint_stop_handler(event): def exit_handler(event): assert isinstance(event, gdb.ExitedEvent) print("event type: exit") - print("exit code: %d" % (event.exit_code)) + if hasattr(event, 'exit_code'): + print("exit code: %d" % (event.exit_code)) + else: + print("exit code: not-present") print("exit inf: %d" % (event.inferior.num)) print("exit pid: %d" % (event.inferior.pid)) print("dir ok: %s" % str("exit_code" in dir(event))) |