Debugging with GDB Manual The GNU Source-Level Debugger (769148-001, March 2014)

(gdb)
-break-list
^done,BreakpointTable={nr_rows="0",nr_cols="6",
hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"},
{width="14",alignment="-1",col_name="type",colhdr="Type"},
{width="4",alignment="-1",col_name="disp",colhdr="Disp"},
{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},
{width="10",alignment="-1",col_name="addr",colhdr="Address"},
{width="40",alignment="2",col_name="what",colhdr="What"}],
body=[]}
(gdb)
The -break-watch command
Synopsis
-break-watch [ -a | -r ]
Create a watchpoint. With the '-a' option it will create an access watchpoint, that is a watchpoint
that triggers either on a read from or on a write to the memory location. With the '-r' option, the
watchpoint created is a read watchpoint, that is it will trigger only when the memory location is
accessed for reading. Without either of the options, the watchpoint created is a regular watchpoint,
that is it will trigger when the memory location is accessed for writing. See “Enhanced support for
watchpoints and breakpoints” (page 158).
Note that '-break-list' will report a single list of watchpoints and breakpoints inserted.
GDB command
The corresponding GDB commands are 'watch', 'awatch', and 'rwatch'.
Example
Setting a watchpoint on a variable in the main function:
(gdb)
-break-watch i
^done,wpt=number="2",exp="i"
(gdb)
-exec-continue
^running
(gdb)
*stopped,reason="watchpoint-trigger",wpt=number="2",exp="i",value=old="0",new="7"
,thread-id="1",frame=addr="0x000029c4",func="main",args=[],file="hello.c",line="8"
(gdb)
Setting a watchpoint on a variable local to a function. GDB will stop the program execution twice:
first for the variable changing value, then for the watchpoint going out of scope.
(gdb)
-break-watch j
^done,wpt=number="2",exp="j"
(gdb)
-exec-continue
^running
(gdb)
*stopped,reason="watchpoint-trigger",wpt=number="2",exp="j",value=old="0",new="17",
thread-id="1",frame=addr="0x000029bc",func="call",args=[],file="hello.c",line="10"
(gdb)
-exec-continue
^running
(gdb)
*stopped,reason="watchpoint-scope",wpnum="2",thread-id="1",frame=addr="0x000029ec",
func="main",args=[],file="hello.c",line="18"
(gdb)
Listing breakpoints and watchpoints, at different points in the program execution. Note that once
the watchpoint goes out of scope, it is deleted.
242 The GDB/MI Interface