Gdb/C 002b 002b-Exception-GDB 002fMI-Catchpoint-Commands
Previous: Ada Exception GDB/MI Catchpoint Commands, Up: GDB/MI Catchpoint Commands [Contents][Index]
27.9.3 C++ Exception GDB/MI Catchpoints
The following GDB/MI commands can be used to create catchpoints
that stop the execution when C++ exceptions are being throw, rethrown,
or caught.
The -catch-throw Command
Synopsis
-catch-throw [ -t ] [ -r regexp]
Stop when the debuggee throws a C++ exception. If regexp is
given, then only exceptions whose type matches the regular expression
will be caught.
If ‘-t’ is given, then the catchpoint is enabled only for one
stop, the catchpoint is automatically deleted after stopping once for
the event.
GDB Command
The corresponding GDB commands are ‘catch throw’
and ‘tcatch throw’ (see Set Catchpoints).
Example
-catch-throw -r exception_type
^done,bkpt={number="1",type="catchpoint",disp="keep",enabled="y",
what="exception throw",catch-type="throw",
thread-groups=["i1"],
regexp="exception_type",times="0"}
(gdb)
-exec-run
^running
(gdb)
~"\n"
~"Catchpoint 1 (exception thrown), 0x00007ffff7ae00ed
in __cxa_throw () from /lib64/libstdc++.so.6\n"
*stopped,bkptno="1",reason="breakpoint-hit",disp="keep",
frame={addr="0x00007ffff7ae00ed",func="__cxa_throw",
args=[],from="/lib64/libstdc++.so.6",arch="i386:x86-64"},
thread-id="1",stopped-threads="all",core="6"
(gdb)
The -catch-rethrow Command
Synopsis
-catch-rethrow [ -t ] [ -r regexp]
Stop when a C++ exception is re-thrown. If regexp is given,
then only exceptions whose type matches the regular expression will be
caught.
If ‘-t’ is given, then the catchpoint is enabled only for one
stop, the catchpoint is automatically deleted after the first event is
caught.
GDB Command
The corresponding GDB commands are ‘catch rethrow’
and ‘tcatch rethrow’ (see Set Catchpoints).
Example
-catch-rethrow -r exception_type
^done,bkpt={number="1",type="catchpoint",disp="keep",enabled="y",
what="exception rethrow",catch-type="rethrow",
thread-groups=["i1"],
regexp="exception_type",times="0"}
(gdb)
-exec-run
^running
(gdb)
~"\n"
~"Catchpoint 1 (exception rethrown), 0x00007ffff7ae00ed
in __cxa_rethrow () from /lib64/libstdc++.so.6\n"
*stopped,bkptno="1",reason="breakpoint-hit",disp="keep",
frame={addr="0x00007ffff7ae00ed",func="__cxa_rethrow",
args=[],from="/lib64/libstdc++.so.6",arch="i386:x86-64"},
thread-id="1",stopped-threads="all",core="6"
(gdb)
The -catch-catch Command
Synopsis
-catch-catch [ -t ] [ -r regexp]
Stop when the debuggee catches a C++ exception. If regexp
is given, then only exceptions whose type matches the regular
expression will be caught.
If ‘-t’ is given, then the catchpoint is enabled only for one
stop, the catchpoint is automatically deleted after the first event is
caught.
GDB Command
The corresponding GDB commands are ‘catch catch’
and ‘tcatch catch’ (see Set Catchpoints).
Example
-catch-catch -r exception_type
^done,bkpt={number="1",type="catchpoint",disp="keep",enabled="y",
what="exception catch",catch-type="catch",
thread-groups=["i1"],
regexp="exception_type",times="0"}
(gdb)
-exec-run
^running
(gdb)
~"\n"
~"Catchpoint 1 (exception caught), 0x00007ffff7ae00ed
in __cxa_begin_catch () from /lib64/libstdc++.so.6\n"
*stopped,bkptno="1",reason="breakpoint-hit",disp="keep",
frame={addr="0x00007ffff7ae00ed",func="__cxa_begin_catch",
args=[],from="/lib64/libstdc++.so.6",arch="i386:x86-64"},
thread-id="1",stopped-threads="all",core="6"
(gdb)
Previous: Ada Exception GDB/MI Catchpoint Commands, Up: GDB/MI Catchpoint Commands [Contents][Index]