免费注册 查看新帖 |

Chinaunix

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

gdb看core文件时有“??” [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-17 10:38 |只看该作者 |倒序浏览
我用gdb看core文件时显示:
Core was generated by `prg12'.
Program terminated with signal 11, Segmentation fault.
warning: Unable to find __dld_flags symbol in object file.

#0  0xc019aff8 in ?? ()
我不清楚怎么看出“#0  0xc019aff8 in ?? ()”的意思。怎么分析这个程序为什么报错?

论坛徽章:
0
2 [报告]
发表于 2009-02-17 10:47 |只看该作者
编译时加-g没有,有没有加优化选项?
还有一般最后第一层可能都是这样,基本上出问题不在??函数上

论坛徽章:
0
3 [报告]
发表于 2009-02-17 12:28 |只看该作者
我用下面的命令看了下,是不是内存不足?
(gdb) thread apply all where

Thread 16 (system thread 5995599):
#0  0xc019aff8 in ?? ()

Thread 15 (system thread 5995646):
#0  0xc020b598 in ?? ()
#1  0xc0049228 in ?? ()
Cannot access memory at address 0x360000
#0  0xc019aff8 in ?? ()
(gdb) bt
#0  0xc019aff8 in ?? ()

论坛徽章:
0
4 [报告]
发表于 2009-02-17 12:44 |只看该作者
我觉得可能是stack已经被弄乱了, 用bt看不出来有意义的东西
建议看一下有没有定义了 char s[10]; 往里拷贝了100个字节 类似的指针越界问题

论坛徽章:
0
5 [报告]
发表于 2009-02-18 11:16 |只看该作者
谢谢。程序中调用msgsnd函数,我把传的消息大小由原来的strlen(msg)改为sizeof(msg),就可以了。具体原因也还没分析出来。

论坛徽章:
0
6 [报告]
发表于 2009-02-18 11:27 |只看该作者
每一个源代码文件都是分开编译,然后才链接的

所以,部分没有使用参数-g编译的源文件,就无法跟踪

论坛徽章:
0
7 [报告]
发表于 2009-02-18 12:27 |只看该作者
原帖由 suejane 于 2009-2-18 11:16 发表
谢谢。程序中调用msgsnd函数,我把传的消息大小由原来的strlen(msg)改为sizeof(msg),就可以了。具体原因也还没分析出来。

如果msg里面有'\0'或者最后一个字节不是'\0',想想strlen(msg)会返回什么
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP