社区
Linux/Unix社区
帖子详情
UNIX线程共用一个变量,出现core dump
zshtiger2414
2009-11-19 05:26:58
在UNIX系统下,创建多线程,做了两个测试程序。
这两个测试程序中都用到线程访问全局变量,但是有一个程序core dump了,一个程序没有core dump,这是为什么啊?
请问哪个达人能帮忙啊?
...全文
150
9
打赏
收藏
UNIX线程共用一个变量,出现core dump
在UNIX系统下,创建多线程,做了两个测试程序。 这两个测试程序中都用到线程访问全局变量,但是有一个程序core dump了,一个程序没有core dump,这是为什么啊? 请问哪个达人能帮忙啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Caballeroo
2009-11-23
打赏
举报
回复
[Quote=引用 8 楼 zshtiger2414 的回复:]
引用 6 楼 caballeroo 的回复:
core dump 是代码segmentation fault时记录内存中数据的文件。
一般需要使用ulimit -c size,才会在代码异常时产生一个core文件。
你的代码应该有内存的非法写入等操作!
正象你说的那样子在程序中几个现成对对stderr进行了写入操作的时候出现了core dump!
这样的错误应该怎么样去避免啊?
[/Quote]
这种错误要是避免的话,完全靠平时写代码的注意点了!
zshtiger2414
2009-11-23
打赏
举报
回复
[Quote=引用 6 楼 caballeroo 的回复:]
core dump 是代码segmentation fault时记录内存中数据的文件。
一般需要使用ulimit -c size,才会在代码异常时产生一个core文件。
你的代码应该有内存的非法写入等操作!
[/Quote]
正象你说的那样子在程序中几个现成对对stderr进行了写入操作的时候出现了core dump!
这样的错误应该怎么样去避免啊?
一 铭
2009-11-21
打赏
举报
回复
这怎么说的准哦, 代码贴上来才知道
morris88
2009-11-21
打赏
举报
回复
把代码贴上来瞧瞧...
Caballeroo
2009-11-21
打赏
举报
回复
core dump 是代码segmentation fault时记录内存中数据的文件。
一般需要使用ulimit -c size,才会在代码异常时产生一个core文件。
你的代码应该有内存的非法写入等操作!
wuyu637
2009-11-19
打赏
举报
回复
如果两个线程都同时往里写,是会有问题的。
你可以先申明一个和那个全局变量一样,只有名字有差异的副本,让其中一个线程,访问副本,另外一个线程访问原来的变量,如果程序不会奔溃,就说明是同步的问题。
或者就直接点用简单的同步方法,mutex_lock之类的,防止这种情况
zshtiger2414
2009-11-19
打赏
举报
回复
[Quote=引用 1 楼 steedhorse 的回复:]
应该是其它的原因。
仅仅因为两个线程访问同一个变量不至于core dump,线程之间共享的东西还多着呢。
[/Quote]
我看了一下程序,真的就是因为程序用fprintf向stderr写东西的时候,因为系统内部调用pthread_mutex_lock函数出错了。
是不是因为这种加锁就可以使得在向某个变量写的时候,就会出现错误啊?
Wenxy1
2009-11-19
打赏
举报
回复
用gdb调试下。
晨星
2009-11-19
打赏
举报
回复
应该是其它的原因。
仅仅因为两个线程访问同一个变量不至于core dump,线程之间共享的东西还多着呢。
启动GDB调试、
core
dump
本文详细介绍了如何设置
core
dump
文件的大小和保存位置,分析了产生segment fault的原因,如内存访问越界、
线程
安全问题、非法指针等,并提供了
一个
模拟
core
dump
的示例。接着讲解了如何使用GDB查看
core
文件,以及GDB的启动方式,特别是针对ROS代码的调试。此外,还提到了valgrind工具进行内存分析的重要性。
Linux 中
core
dump
异常的分析
本文介绍 Linux 系统中
core
dump
的概念、常见原因及分析方法。包括如何启用
core
dump
、触发
core
dump
以及使用 gdb 进行调试。
GDB调试
core
dump
本文介绍了什么是
Core
Dump
文件,以及造成Segment Fault的原因,包括内存访问越界、
线程
安全问题、非法指针等。同时,文章讨论了如何生成
Core
Dump
文件,通过设置`ulimit -c`,并提供了使用GDB分析
Core
Dump
的方法,帮助开发者定位和解决问题。
Linux 下的
Core
dump
(一)
本文介绍了Linux下的
Core
Dump
概念,当程序异常终止或崩溃时,操作系统会保存内存状态到
Core
文件。
Core
Dump
产生的原因包括接收特定
Unix
信号,如SIGQUIT。内容还涵盖了
Core
文件的打开与关闭设置,命名规则以及如何自定义
core
dump
文件格式。
GDB 调试与
Core
Dump
分析技术
本文介绍了GDB调试技术与
Core
Dump
分析方法。GDB是Linux/
Unix
系统常用调试工具,可用于C/C++等语言,具备断点控制、
变量
查看等功能。
Core
Dump
是程序崩溃时的内存镜像文件,可用于事后分析。文章还阐述了两者结合使用的方法及生产环境应用的注意事项,能高效解决程序崩溃问题。
Linux/Unix社区
23,223
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章