aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.python/py-events.py
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/testsuite/gdb.python/py-events.py')
-rw-r--r--gdb/testsuite/gdb.python/py-events.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.python/py-events.py b/gdb/testsuite/gdb.python/py-events.py
index b21f562..57b0324 100644
--- a/gdb/testsuite/gdb.python/py-events.py
+++ b/gdb/testsuite/gdb.python/py-events.py
@@ -132,3 +132,28 @@ class test_newobj_events(gdb.Command):
test_newobj_events()
+
+def gdb_exiting_handler(event, throw_error):
+ assert isinstance(event, gdb.GdbExitingEvent)
+ if throw_error:
+ raise gdb.GdbError("error from gdb_exiting_handler")
+ else:
+ print("event type: gdb-exiting")
+ print("exit code: %d" % (event.exit_code))
+
+class test_exiting_event(gdb.Command):
+ """GDB Exiting event."""
+
+ def __init__(self):
+ gdb.Command.__init__(self, "test-exiting-event", gdb.COMMAND_STACK)
+
+ def invoke(self, arg, from_tty):
+ if arg == "normal":
+ gdb.events.gdb_exiting.connect(lambda e: gdb_exiting_handler(e,False))
+ elif arg == "error":
+ gdb.events.gdb_exiting.connect(lambda e: gdb_exiting_handler(e,True))
+ else:
+ raise gdb.GdbError("invalid or missing argument")
+ print("GDB exiting event registered.")
+
+test_exiting_event()