socket编程报错

noal0502 2013-03-30 05:11:27
最近做一个移植的项目,用socket通信,加调试信息,打印buf的信息,没什么问题,都是些统计信息,但是还是报Segmentation fault (core dumped)错误,而且提示“socket timeout”。请教各位大侠,怎么调试Segmentation fault (core dumped)错误?还有“socket timeout”是什么原因引起的?
...全文
177 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
prohibit 2013-04-01
  • 打赏
  • 举报
回复
一般Segmentation fault的原因是:内存访问越界;指针使用不当;多线程中对会被多个线程同时访问的全局数据进行读写时未加锁保护; 根据这些查查代码,调试方法可以搜搜
noal0502 2013-04-01
  • 打赏
  • 举报
回复
引用 9 楼 fordfu74 的回复:
socket timeout 不是什么大问题。 segment fault一般是内存越界了。估计你申请的buffer在处理的时候有异常的情况发生。
我也觉得是这个问题,但是找不到出错的地方。
RedWolf1999 2013-04-01
  • 打赏
  • 举报
回复
引用 11 楼 noal0502 的回复:
引用 10 楼 noal0502 的回复: 引用 5 楼 fly_qj 的回复: 引用 3 楼 qq120848369 的回复: 阻塞一下Sigpipe SIGPIPE是不会生成core的吧。为了一劳永逸我建议把gdb搞起来。 有人提醒我用gdb调试,但是不会用gdb。任务赶得紧,没时间学gdb。 周围也没人会用gdb调试。
就你遇到的这个问题,结合core文件,gdb进去,就一句backtrace就能看到死哪了。
noal0502 2013-04-01
  • 打赏
  • 举报
回复
引用 10 楼 noal0502 的回复:
引用 5 楼 fly_qj 的回复: 引用 3 楼 qq120848369 的回复: 阻塞一下Sigpipe SIGPIPE是不会生成core的吧。为了一劳永逸我建议把gdb搞起来。 有人提醒我用gdb调试,但是不会用gdb。任务赶得紧,没时间学gdb。
周围也没人会用gdb调试。
noal0502 2013-04-01
  • 打赏
  • 举报
回复
引用 5 楼 fly_qj 的回复:
引用 3 楼 qq120848369 的回复: 阻塞一下Sigpipe SIGPIPE是不会生成core的吧。为了一劳永逸我建议把gdb搞起来。
有人提醒我用gdb调试,但是不会用gdb。任务赶得紧,没时间学gdb。
MediaP 2013-04-01
  • 打赏
  • 举报
回复
socket timeout 不是什么大问题。 segment fault一般是内存越界了。估计你申请的buffer在处理的时候有异常的情况发生。
GOLF_R20 2013-04-01
  • 打赏
  • 举报
回复
歪嘴鱼 2013-04-01
  • 打赏
  • 举报
回复
检查缓冲区申请和初始化
RedWolf1999 2013-03-31
  • 打赏
  • 举报
回复
引用 3 楼 qq120848369 的回复:
阻塞一下Sigpipe
SIGPIPE是不会生成core的吧。为了一劳永逸我建议把gdb搞起来。
noal0502 2013-03-30
  • 打赏
  • 举报
回复
引用 3 楼 qq120848369 的回复:
阻塞一下Sigpipe
是不是加“signal(SIGPIPE, SIG_IGN);”进行调试 ?
qq120848369 2013-03-30
  • 打赏
  • 举报
回复
阻塞一下Sigpipe
noal0502 2013-03-30
  • 打赏
  • 举报
回复
求指导,各位大侠。
noal0502 2013-03-30
  • 打赏
  • 举报
回复
我认为出现socket超时的原因有以下几种可能:1.A没收到B的请求;2.A收到B的请求,没处理; 3.A处理了,没发送回B;4.A和B端口号不对。

23,223

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧