Configure GCC with --enable-checking
. Compile it with
-g
so that you can use gdb.
Compile your test case with -v -da -Q
.
-Q
will show which function in the test case is causing
it to crash.
-v
shows how `cc1' was invoked (useful for invoking cc1
manually in gdb).
-da
dumps the RTL to a file after each stage.
Next, use gdb to get a stack trace. Compile the compiler with
debugging enabled (-g
), use the -v
option to see how cc1 is getting
invoked, and then do
gdb cc1
run <arguments>
where
list
Print out the values of interesting variables (e.g. the ones in the statement which got a segmentation fault).
You can use the pt
and pr
macros from the
gdbinit.in file to display them. For example, if there is a value
of type tree
named t
, and a value of type
rtx
named r
, you can use these commands:
source .gdbinit
print t
pt
print r
pr
pt