社区
Linux/Unix社区
帖子详情
多线程程序出错如何无法确定出错位置
chen1phy
2002-11-28 05:43:40
我的一个多线程程序,有三个线程在运行,这三个线程在大部分时间里面都在poll(),等待网络上有数据到来,然后做处理。
可是在每次core dump以后,用gdb跟踪,都发现定位在poll()这个函数中。
一种解释是,当某个线程在做某些处理的过程中,出错,导致core dump,该线程先退出,而最后一个退出的线程很可能正在运行poll(),所以最后只能定位到poll()中,而不是真正发生错误的地方。
不知道有什么好的解决办法?
...全文
26
3
打赏
收藏
多线程程序出错如何无法确定出错位置
我的一个多线程程序,有三个线程在运行,这三个线程在大部分时间里面都在poll(),等待网络上有数据到来,然后做处理。 可是在每次core dump以后,用gdb跟踪,都发现定位在poll()这个函数中。 一种解释是,当某个线程在做某些处理的过程中,出错,导致core dump,该线程先退出,而最后一个退出的线程很可能正在运行poll(),所以最后只能定位到poll()中,而不是真正发生错误的地方。 不知道有什么好的解决办法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bnwxf
2002-11-28
打赏
举报
回复
一个不可能的原因:
你没有截获signal。所以当信号到达时,程序就core dump了;)
如果你用的是linux,它的多县城特别容易被信号打断。
gaoxianfeng
2002-11-28
打赏
举报
回复
多打印点信息吧
cuiwader
2002-11-28
打赏
举报
回复
应该不是gdb跟踪的问题,应该就是poll函数引起core dump的,看一看你的poll函数的用法是否正确,另外你需要增加一些宏定义,使得连接的库函数是线程安全的。可以在编译命令中怎么-D_REENTRANT和-D_PTHREAD试一试。
JAVA
多线程
精讲下
本课程是《零基础学Java》系列课程中的"
多线程
"相关课程.授课形式延续了之前课程的授课风格。内容细腻、详尽,由浅入深!通过本门课程的学习你可以深刻理解Java
多线程
的原理及实现运行机制,深刻学习
多线程
的生命...
如何寻找
多线程
程序
的bug
如何寻找
多线程
程序
的bug1. 准备工作2. 区分错误类型2.1 根本
无法
运行:2.2 运行过程中异常终止:2.3 正常运行但结果错误:2.4 正常运行,但结果偶尔错误:3. 缩小错误范围3.1 只用一个线程的
程序
3.2 抽取中间结果4....
Java
多线程
中常见错误处理
在几乎所有编程语言中,由于
多线程
引发的错误都有着难以再现的特点,
程序
的死锁或其它
多线程
错误可能只在...因此,在编写
多线程
程序
时,事先认识和防范可能出现的错误特别重要。 无论是客户端还是服务器端多线...
C++
多线程
在用共享变量时容易引起并发读取数据错误(C++
多线程
相关)
当
无法
确定
自己需要开多少线程来运行
程序
时可以用以下命令查看用于确认自己当前机器开多少线程效率是最高的(仅仅作为参考): 直接用lambda函数方式进行线程调用: 此时b就可以调用该lambda函数调用线程资源 ...
Java新手学习入门总结:
多线程
失误知识点梳理
无论是客户端还是服务器端
多线程
Java
程序
,最常见的
多线程
问题包括死锁、隐性死锁和数据竞争。 1、死锁 多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此
程序
不可能...
Linux/Unix社区
23,121
社区成员
74,508
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章