GDB: Breakpoints

Set Breakpoints

Stop program whenever a point in the program is reached.

break [-qualified] locspec
int sum(int a, int b)
{
  return a + b;
}

int main()
{
  int a = 1, b = 2;
  int s = sum(a, b);
}
(gdb) break 3
(gdb) break sum
(gdb) break demo.c:3
(gdb) break demo.c:sum

(gdb) break -qualified exit

(gdb) disassemble sum
   0x000000000040066c <+0>:     sub     sp, sp, #0x10
   0x0000000000400670 <+4>:     str     w0, [sp, #12]
   0x0000000000400674 <+8>:     str     w1, [sp, #8]
   0x0000000000400678 <+12>:    ldr     w1, [sp, #12]
   0x000000000040067c <+16>:    ldr     w0, [sp, #8]
   0x0000000000400680 <+20>:    add     w0, w1, w0
   0x0000000000400684 <+24>:    add     sp, sp, #0x10
   0x0000000000400688 <+28>:    ret

(gdb) break *sum+4
(gdb) break 0x0000000000400670


Conditional Breakpoints

Set condition.

break locspec [-force-condition] if cond

Change condition.

condition breakpoint [cond]


Regex Breakpoints

rbeak regex
rbreak file:regex
rbreak sum.*
rbreak demo.c:sum.*

# all functions in current program
rbreak .
# all functions in file
rbreak demo.c:.


Thread-Specific Breakpoints

break locspec thread thread-id [if cond]


Inferior-Specific Breakpoints

break locspec inferior inferior-id [if cond]


Temporary Breakpoints

Automatically deleted after the hit.

tbreak args


Commands

Set commands.

commands [breakpoints...]
    commands...
end

Change commands.

commands breakpoints...
    commands...
end
break sum
commands
backtrace
continue
end

break sum
break main
commands 1, 2
backtrace
continue
end


Manage Breakpoints

Show breakpoints

info break

Delete the breakpoints.

delete [breakpoints] [list…]

Enable, disable breakpoints

enable breakpoints [breakpoints]
disable breakpoints [breakpoints]

Delete all breakpoints at to locspec.

clear locspec

Save, restore breakpoints.

save breakpoints file
source file