Sun Studio CC编译,GDB调试

1431阅读 0评论2010-10-09 RealAMD
分类:

问题:
 
    项目中使用Sun Studio 11进行编译,将CXXFLAGS=-g,但编译出的文件使用GDB调试时,提示没有调试信息
 
 
测试代码Test.c
 

int main(int argc, char* argv[])
{
    return 0;
}

测试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吧
上一篇:Gdb vs. dbx feature comparison
下一篇:SMF服务状态变为Maintaince怎么办