Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1920327
  • 博文数量: 261
  • 博客积分: 8073
  • 博客等级: 中将
  • 技术积分: 2363
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-10 15:23
文章分类

全部博文(261)

文章存档

2013年(1)

2012年(1)

2011年(50)

2010年(34)

2009年(4)

2008年(17)

2007年(55)

2006年(99)

分类:

2010-10-09 00:05:19

问题:
 
    项目中使用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吧
阅读(1346) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~