GDB/MI Breakpoint Information (Debugging with ROCGDB)

Next: GDB/MI Frame Information, Previous: GDB/MI Async Records, Up: GDB/MI Output Records [Contents][Index]

#### 28.5.4 GDB/MI Breakpoint Information

When ROCGDB reports information about a breakpoint, a tracepoint, a watchpoint, or a catchpoint, it uses a tuple with the following fields:

`number`

  The breakpoint number.

`type`

  The type of the breakpoint. For ordinary breakpoints this will be ‘`breakpoint`’, but many values are possible.

`catch-type`

  If the type of the breakpoint is ‘`catchpoint`’, then this indicates the exact type of catchpoint.

`disp`

  This is the breakpoint disposition—either ‘`del`’, meaning that the breakpoint will be deleted at the next stop, or ‘`keep`’, meaning that the breakpoint will not be deleted.

`hit-lanes`

  Optional field that is present if the thread that caused the stop has multiple lanes. It lists the lanes that were active when the breakpoint was hit. The field’s value is formatted as a lane ID list (see lane ID list). If the breakpoint is conditional, the list is further reduced to include only lanes for which the breakpoint condition evaluates true. I.e., the list only includes the lanes which explain the stop. For example, here is what the field looks like if lanes 0, 2, 3, 4, and 10 were active and for which the breakpoint condition evaluates as true:

      *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
         hit-lanes="0 2-4 10",
         frame={level="0",addr="0x00007ffff580b8b4",func="kernel",
                 args=[]}},
         thread-id="3",lane-id="0",stopped-threads="all"}

  See description of how break commands and heterogeneous debugging interact, for the description of how ROCGDB behaves around breakpoints, breakpoint conditions, breakpoint commands and lanes.

`enabled`

  This indicates whether the breakpoint is enabled, in which case the value is ‘`y`’, or disabled, in which case the value is ‘`n`’. Note that this is not the same as the field `enable`.

`addr`

  The address of the breakpoint. This may be a hexidecimal number, giving the address; or the string ‘`<PENDING>`’, for a pending breakpoint; or the string ‘`<MULTIPLE>`’, for a breakpoint with multiple locations. This field will not be present if no address can be determined. For example, a watchpoint does not have an address.

`addr_flags`

  Optional field containing any flags related to the address. These flags are architecture-dependent; see Architectures for their meaning for a particular CPU.

`func`

  If known, the function in which the breakpoint appears. If not known, this field is not present.

`filename`

  The name of the source file which contains this function, if known. If not known, this field is not present.

`fullname`

  The full file name of the source file which contains this function, if known. If not known, this field is not present.

`line`

  The line number at which this breakpoint appears, if known. If not known, this field is not present.

`at`

  If the source file is not known, this field may be provided. If provided, this holds the address of the breakpoint, possibly followed by a symbol name.

`pending`

  If this breakpoint is pending, this field is present and holds the text used to set the breakpoint, as entered by the user.

`evaluated-by`

  Where this breakpoint’s condition is evaluated, either ‘`host`’ or ‘`target`’.

`thread`

  If this is a thread-specific breakpoint, then this identifies the thread in which the breakpoint can trigger.

`task`

  If this breakpoint is restricted to a particular Ada task, then this field will hold the task identifier.

`cond`

  If the breakpoint is conditional, this is the condition expression.

`ignore`

  The ignore count of the breakpoint.

`enable`

  The enable count of the breakpoint.

`traceframe-usage`

  FIXME.

`static-tracepoint-marker-string-id`

  For a static tracepoint, the name of the static tracepoint marker.

`mask`

  For a masked watchpoint, this is the mask.

`pass`

  A tracepoint’s pass count.

`original-location`

  The location of the breakpoint as originally specified by the user. This field is optional.

`times`

  The number of times the breakpoint has been hit.

`installed`

  This field is only given for tracepoints. This is either ‘`y`’, meaning that the tracepoint is installed, or ‘`n`’, meaning that it is not.

`what`

  Some extra data, the exact contents of which are type-dependent.

`locations`

  This field is present if the breakpoint has multiple locations. It is also exceptionally present if the breakpoint is enabled and has a single, disabled location.

  The value is a list of locations. The format of a location is described below.

A location in a multi-location breakpoint is represented as a tuple with the following fields:

`number`

  The location number as a dotted pair, like ‘`1.2`’. The first digit is the number of the parent breakpoint. The second digit is the number of the location within that breakpoint.

`enabled`

  There are three possible values, with the following meanings:

  `y`

    The location is enabled.

  `n`

    The location is disabled by the user.

  `N`

    The location is disabled because the breakpoint condition is invalid at this location.

`addr`

  The address of this location as an hexidecimal number.

`addr_flags`

  Optional field containing any flags related to the address. These flags are architecture-dependent; see Architectures for their meaning for a particular CPU.

`func`

  If known, the function in which the location appears. If not known, this field is not present.

`file`

  The name of the source file which contains this location, if known. If not known, this field is not present.

`fullname`

  The full file name of the source file which contains this location, if known. If not known, this field is not present.

`line`

  The line number at which this location appears, if known. If not known, this field is not present.

`thread-groups`

  The thread groups this location is in.

For example, here is what the output of `-break-insert` (see GDB/MI Breakpoint Commands) might be:

    -> -break-insert main
    <- ^done,bkpt={number="1",type="breakpoint",disp="keep",
        enabled="y",addr="0x08048564",func="main",file="myprog.c",
        fullname="/home/nickrob/myprog.c",line="68",thread-groups=["i1"],
        times="0"}
    <- (gdb)

Next: GDB/MI Frame Information, Previous: GDB/MI Async Records, Up: GDB/MI Output Records [Contents][Index]