aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/doc/python.texi5
-rw-r--r--gdb/testsuite/gdb.python/py-events.exp20
-rw-r--r--gdb/testsuite/gdb.python/py-events.py5
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)))