编译GCC时加上 –enable-checking。同时使用-g和-O0选项,使得编译出的二进制程序可以使用gdb调试。
编译测试用例时加上-v -da -Q。
-
-Q 显示是那个函数使得测试用例没有通过
-
-v 显示cc1是如何被调用的(在gdb中手动调用cc1时非常有用)
-
-da 将每段后的RTL信息保存在文件中
然后使用gdb获得调用栈信息:
bash$ gdb cc1
gdb> run arguments (cc1 将会在段错误出现时停止运行)
gdb> where
gdb> list
显示感兴趣的变量信息,比如引起段错误的变量。可以使用在gdbinit.in中的pt和pr宏来显示GCC数据。例如,有一个tree类型值t,还有一个rtx类型值r,可以使用下面的命令:
gdb>source .gdbinit
gdb>print r
gdb>pt
gdb>print r
gdb>pr
gdb>pt