免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3116 | 回复: 1
打印 上一主题 下一主题

aix使用gcc编译程序运行问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-22 18:11 |只看该作者 |倒序浏览
由于服务器被重装,导致原来开发环境没了,现在重新安装gcc后,发现编译出来的程序不能运行,老是会core,使用gdb调试,发现类成员静态变量赋值的时候core掉,
根据调试信息,类静态变量好像没被初始化(实际代码中有初始化的),_M_p = 0x0,导致赋值的时候core掉,在linux和solaris下都能正常使用的,就是在aix下有问题。
我试了aix下gcc的好几个版本(rpm包和二进制包都试过,gcc.4.1.1.tar.Z、gcc-3.3.2、gcc-4.0.0、gcc-4.2.0),都是有这个问题,不知哪位有没碰到过,
之前服务器部署开发环境的时候也碰到过(06年),问当时的同事,只知道说好像是换了gcc版本解决的,现在也不知道具体是什么版本了。

操作系统版本:aix5.3

gdb调试core文件信息
(gdb) bt
#0  0xd0345860 in fetch_and_addlp () from /usr/lib/libc.a(shr.o)
#1  0x201be6b0 in __gnu_cxx::__exchange_and_add(int volatile*, int) (__mem=
findvar.c:706: internal-error: value_from_register: Value not stored anywhere!
A problem internal to GDB has been detected,
further debugging may prove unreliable.

使用gdb单步调试在下面这句赋值core掉
m_strConfigFile = "*****";

(gdb) print m_strConfigFile
$1 = {static npos = <optimized out>,
  _M_dataplus = {<allocator<char>> = {<new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x0}}
(gdb) s

Program received signal SIGSEGV, Segmentation fault.
0xd0345860 in fetch_and_addlp () from /usr/lib/libc.a(shr.o)

论坛徽章:
0
2 [报告]
发表于 2011-11-22 23:04 |只看该作者
google搜索,static objects in the c++ class are not getting initialized,但没有找到具体的解决办法,不知哪位遇到过这种情况。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP