Breakpoints in Guile are represented by objects of type
<gdb:breakpoint>.
The following breakpoint-related procedures are provided by the
(gdb) module:
Create a new breakpoint. spec is a string naming the location of the breakpoint, or an expression that defines a watchpoint. The contents can be any location recognized by the
breakcommand, or in the case of a watchpoint, by thewatchcommand.The optional type denotes the breakpoint to create. This argument can be either:
BP_BREAKPOINTorBP_WATCHPOINT. type defaults toBP_BREAKPOINT.The optional wp-class argument defines the class of watchpoint to create, if type is
BP_WATCHPOINT. If a watchpoint class is not provided, it is assumed to be aWP_WRITEclass.The optional internal argument allows the breakpoint to become invisible to the user. The breakpoint will neither be reported when created, nor will it be listed in the output from
info breakpoints(but will be listed with themaint info breakpointscommand). If an internal flag is not provided, the breakpoint is visible (non-internal).When a watchpoint is created, gdb will try to create a hardware assisted watchpoint. If successful, the type of the watchpoint is changed from
BP_WATCHPOINTtoBP_HARDWARE_WATCHPOINTforWP_WRITE,BP_READ_WATCHPOINTforWP_READ, andBP_ACCESS_WATCHPOINTforWP_ACCESS. If not successful, the type of the watchpoint is left asWP_WATCHPOINT.The available types are represented by constants defined in the
gdbmodule:
BP_BREAKPOINT- Normal code breakpoint.
BP_WATCHPOINT- Watchpoint breakpoint.
BP_HARDWARE_WATCHPOINT- Hardware assisted watchpoint. This value cannot be specified when creating the breakpoint.
BP_READ_WATCHPOINT- Hardware assisted read watchpoint. This value cannot be specified when creating the breakpoint.
BP_ACCESS_WATCHPOINT- Hardware assisted access watchpoint. This value cannot be specified when creating the breakpoint.
The available watchpoint types represented by constants are defined in the
(gdb)module:
Permanently delete breakpoint. This also invalidates the Guile breakpoint object. Any further attempt to access the object will throw an exception.
Return a list of all breakpoints. Each element of the list is a
<gdb:breakpoint>object.
Return
#tif object is a<gdb:breakpoint>object, and#fotherwise.
Return
#tif breakpoint is valid,#fotherwise. A<gdb:breakpoint>object can become invalid if the user deletes the breakpoint. In this case, the object still exists, but the underlying breakpoint does not. In the cases of watchpoint scope, the watchpoint remains valid even if execution of the inferior leaves the scope of that watchpoint.
Return the breakpoint's number — the identifier used by the user to manipulate the breakpoint.
Return the breakpoint's type — the identifier used to determine the actual breakpoint type or use-case.
Return
#tif the breakpoint is visible to the user when hit, or when the ‘info breakpoints’ command is run. Otherwise return#f.
Return the location of the breakpoint, as specified by the user. It is a string. If the breakpoint does not have a location (that is, it is a watchpoint) return
#f.
Return the breakpoint expression, as specified by the user. It is a string. If the breakpoint does not have an expression (the breakpoint is not a watchpoint) return
#f.
Return
#tif the breakpoint is enabled, and#fotherwise.
Set the enabled state of breakpoint to flag. If flag is
#fit is disabled, otherwise it is enabled.
Return
#tif the breakpoint is silent, and#fotherwise.Note that a breakpoint can also be silent if it has commands and the first command is
silent. This is not reported by thesilentattribute.
Set the silent state of breakpoint to flag. If flag is
#fthe breakpoint is made silent, otherwise it is made non-silent (or noisy).
Set the ignore count for breakpoint to count.
Set the hit count of breakpoint to count. At present, count must be zero.
Return the thread-id for thread-specific breakpoint breakpoint. Return #f if breakpoint is not thread-specific.
Set the thread-id for breakpoint to thread-id. If set to
#f, the breakpoint is no longer thread-specific.
If the breakpoint is Ada task-specific, return the Ada task id. If the breakpoint is not task-specific (or the underlying language is not Ada), return
#f.
Set the Ada task of breakpoint to task. If set to
#f, the breakpoint is no longer task-specific.
Return the condition of breakpoint, as specified by the user. It is a string. If there is no condition, return
#f.
Set the condition of breakpoint to condition, which must be a string. If set to
#fthen the breakpoint becomes unconditional.
Return the stop predicate of breakpoint. See
set-breakpoint-stop!below in this section.
Set the stop predicate of breakpoint. procedure takes one argument: the <gdb:breakpoint> object. If this predicate is set to a procedure then it is invoked whenever the inferior reaches this breakpoint. If it returns
#t, or any non-#fvalue, then the inferior is stopped, otherwise the inferior will continue.If there are multiple breakpoints at the same location with a
stoppredicate, each one will be called regardless of the return status of the previous. This ensures that allstoppredicates have a chance to execute at that location. In this scenario if one of the methods returns#tbut the others return#f, the inferior will still be stopped.You should not alter the execution state of the inferior (i.e., step, next, etc.), alter the current frame context (i.e., change the current active frame), or alter, add or delete any breakpoint. As a general rule, you should not alter any data within gdb or the inferior at this time.
Example
stopimplementation:(define (my-stop? bkpt) (let ((int-val (parse-and-eval "foo"))) (value=? int-val 3))) (define bkpt (create-breakpoint! "main.c:42")) (set-breakpoint-stop! bkpt my-stop?)