问题:
项目中使用Sun Studio 11进行编译,将CXXFLAGS=-g,但编译出的文件使用GDB调试时,提示没有调试信息
测试代码Test.c
|
|
测试1:
$ CC -g -o Test Test.cpp
$ gdb Test
ok,可以调试
测试2:
$ CC -g -c Test.cpp; CC -g -o Test Test.o
注:保持编译、链接一致性,请参考《Sun Studio 12:C++ 用户指南.pdf》2.4.3节
$ gdb Test
提示没有调试信息
查询资料,原来sun studio 默认产生的调试信息的格式为stabs,需要编译时-xdebugformat选项,才能产生dwarf格式的调试信息(gdb使用的调试信息格式,dbx可识别两种格式)
stabs和dwarf两种调试信息格式的比较请参考:http://blogs.sun.com/quenelle/entry/stabs_versus_dwarf
解决方法:
在CXXFLAGS选项中加上-xdebugformat=dwarf
后记:
项目中编译大部分工程,可以通过。但是编译某个工程(使用了ICE)时,报以下错误
|
DBG_GEN FATAL ERROR: "../src/dbg_dwarf2.c":6630, dwarf_transform_to_disk_form() returned DW_DLV_NOCOUNT [DBG_GEN 5.0.8] CC: Fatal error in cg: 退出 (core dumped) |
网上有说 Sun Studio 11不支持dwarf格式,有说支持但有bug的,具体原因就不知道了:(
总之,如果条件允许还是使用sun studio 12吧