make STAGE1_CFLAGS='-g -O0' all-stage1. However, in our project, at most time we only need to debug our own code, which is supposed to be in a single file gcc-4.2.2/gcc/cs255.c. So you can just build and install the compiler normally. Then each time after you modify cs255.c, build the compiler with make BOOT_CFLAGS='-O0 -g3'. This will go through the bootstrap steps. To further save compile time, you can go to obj/gcc directory and run make CFLAGS='-O0 -g3'. And don't forget to run make install.
gcc gcc you called when you do compilation is just a driver for real compiler cc1, assembler as and linker collect2. Use option -v you can see the exact command sequence. For direct debugging you should run gdb cc1.
gcc -v, you can write a gdb command file to save the typing when starting gdb. Here is an example of such file (your file location and parameters may be different).
file /localdisk/bao/gcc/obj/gcc/cc1
b rest_of_handle_cs255
r -quiet -v ab.c -quiet -dumpbase ab.c -mtune=generic -auxbase-strip ab.o -O2 -version -fcs255 -fdump-tree-gimple -fdump-cs255-tree-gimple -o /tmp/cceaerqF.s
Let's name this file as gdbfile, and then you can run gdb -x gdbfile to start debugging.
break [file:]func_name to set a break point; break [filename:]linenum to set a break point at a line; break ... if cond to stop only when cond evaluates to true; info break to print all breakpoints.
backtrace or bt to print the current call stack; frame n or f n to select a stack frame.
print variable to view variable value.
watch to set watchpoints and disable, enble or delete these points.
cc1 on your test case directory, and then you don't need to change your working directory in gdb back and forth. M-x gdb
gdb --annotate=3 cc1.
gdb has been started, so you can use it normally.
tree-dump.c and tree-pretty-print.c. Let node be a gimple tree node, p debug_tree(node) can print some basic information about node;
p print_generic_stmt(stdout, node, 2) can print the generic form of node if it is a statement node, where 2 is the value of the macro TDF_SLIM;
p dump_node(node, 2, stdout) can dump details about node and its children.
-fdump-tree-gimple
-fdump-cs255-tree-gimple. This will actually print the gimple tree before and after cs255 transformation.