mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-29 08:06:29 +08:00
PR python/15620, PR python/18620 - breakpoint events in Python
This patch adds some breakpoint events to Python. In particular, there is a creation event that is emitted when a breakpoint is created; a modification event that is emitted when a breakpoint changes somehow; and a deletion event that is emitted when a breakpoint is deleted. In this patch, the event's payload is the breakpoint itself. I considered making a new event type to hold the breakpoint, but I didn't see a need. Still, I thought I would mention this as a spot where some other choice is possible. Built and regtested on x86-64 Fedora 23. 2016-07-13 Tom Tromey <tom@tromey.com> PR python/15620, PR python/18620: * python/py-evts.c (gdbpy_initialize_py_events): Call add_new_registry for new events. * python/py-events.h (events_object) <breakpoint_created, breakpoint_deleted, breakpoint_modified>: New fields. * python/py-breakpoint.c (gdbpy_breakpoint_created): Emit the breakpoint changed event. (gdbpy_breakpoint_deleted): Emit the breakpoint deleted event. (gdbpy_breakpoint_modified): New function. (gdbpy_initialize_breakpoints): Attach to the breakpoint modified observer. 2016-07-13 Tom Tromey <tom@tromey.com> PR python/15620, PR python/18620: * python.texi (Events In Python): Document new breakpoint events. 2016-07-13 Tom Tromey <tom@tromey.com> PR python/15620, PR python/18620: * gdb.python/py-breakpoint.exp (connect_event, check_last_event) (test_bkpt_events): New procs.
This commit is contained in:
@ -507,6 +507,46 @@ proc test_bkpt_pending {} {
|
||||
"Check pending status of pending breakpoint"
|
||||
}
|
||||
|
||||
# Helper proc to install an event listener for a given breakpoint
|
||||
# event. NAME is the name of the event to listen for.
|
||||
proc connect_event {name} {
|
||||
set lambda "lambda x: note_event(\"$name\")"
|
||||
gdb_test_no_output "python gdb.events.$name.connect($lambda)" \
|
||||
"install $name event listener"
|
||||
}
|
||||
|
||||
# Helper proc to check that the most recently emitted breakpoint event
|
||||
# is EXPECTED.
|
||||
proc check_last_event {expected} {
|
||||
gdb_test "python print (last_bp_event)" $expected \
|
||||
"check for $expected event"
|
||||
}
|
||||
|
||||
proc test_bkpt_events {} {
|
||||
global testfile
|
||||
|
||||
clean_restart ${testfile}
|
||||
|
||||
gdb_py_test_multiple "Create event handler" \
|
||||
"python" "" \
|
||||
"def note_event(arg):" "" \
|
||||
" global last_bp_event" "" \
|
||||
" last_bp_event = arg" "" \
|
||||
"end" ""
|
||||
gdb_test_no_output "python last_bp_event = None"
|
||||
|
||||
connect_event breakpoint_created
|
||||
connect_event breakpoint_modified
|
||||
connect_event breakpoint_deleted
|
||||
|
||||
gdb_breakpoint [gdb_get_line_number "Break at add."]
|
||||
check_last_event breakpoint_created
|
||||
gdb_test_no_output "disable 1"
|
||||
check_last_event breakpoint_modified
|
||||
gdb_test_no_output "delete 1"
|
||||
check_last_event breakpoint_deleted
|
||||
}
|
||||
|
||||
test_bkpt_basic
|
||||
test_bkpt_deletion
|
||||
test_bkpt_cond_and_cmds
|
||||
@ -517,3 +557,4 @@ test_bkpt_eval_funcs
|
||||
test_bkpt_temporary
|
||||
test_bkpt_address
|
||||
test_bkpt_pending
|
||||
test_bkpt_events
|
||||
|
Reference in New Issue
Block a user