linux下产生的core文件与堆栈大小的关系
2018-02-08 21:17
225 查看
本人第一次写博客,写得不好请多包涵。
最近碰到一个事情,公司开发的时候(linux下的c++开发),生成的core文件多达120多G,导致调试起来非常艰难。工程中用到了rocketmq的客户端模块,发现这部分模块启动前后相差了100G,刚好这一模块是本人添加的,按道理由我查找原因。
通过assert(0)添加断言的方法,本人发现在生产者或者消费者启动(即调用start()函数)前后,产生了如此巨大的core文件差异。继续往里调试,发现每一个线程被创建之后,产生的core文件相差了400M,结果发现跟操作系统默认设置的堆栈大小相同。通过查询相关线程函数。发现pthread_attr_setstacksize是用于为线程设置堆栈大小的函数。
通过使用修改操作系统的默认堆栈大小和程序中静态调用pthread_attr_setstacksize函数的方法,果然将core文件的大小降下来了。
ps:本次事件是一个乌龙事件,是一位同事为了解决另一个问题修改了堆栈大小。
由于本人对于pthread_attr_setstacksize并不是太熟悉,在此处添加一段pthread_attr_setstacksize函数的使用代码(摘自网上http://blog.csdn.net/godleading/article/details/7997630)。供自己和其他并不是太熟悉这个函数的朋友学习。
pthread_t thread_id;
int ret ,stacksize = 20480; /*thread 堆栈设置为20K,stacksize以字节为单位。*/
pthread_attr_t attr;
ret = pthread_attr_init(&attr); /*初始化线程属性*/
if (ret != 0)
return -1;
ret = pthread_attr_setstacksize(&attr, stacksize);
if(ret != 0)
return -1;
ret = pthread_create (&thread_id, &attr, &func, NULL);
if(ret != 0)
return -1;
ret = pthread_attr_destroy(&attr); /*不再使用线程属性,将其销毁*/
if(ret != 0)
return -1;
最近碰到一个事情,公司开发的时候(linux下的c++开发),生成的core文件多达120多G,导致调试起来非常艰难。工程中用到了rocketmq的客户端模块,发现这部分模块启动前后相差了100G,刚好这一模块是本人添加的,按道理由我查找原因。
通过assert(0)添加断言的方法,本人发现在生产者或者消费者启动(即调用start()函数)前后,产生了如此巨大的core文件差异。继续往里调试,发现每一个线程被创建之后,产生的core文件相差了400M,结果发现跟操作系统默认设置的堆栈大小相同。通过查询相关线程函数。发现pthread_attr_setstacksize是用于为线程设置堆栈大小的函数。
通过使用修改操作系统的默认堆栈大小和程序中静态调用pthread_attr_setstacksize函数的方法,果然将core文件的大小降下来了。
ps:本次事件是一个乌龙事件,是一位同事为了解决另一个问题修改了堆栈大小。
由于本人对于pthread_attr_setstacksize并不是太熟悉,在此处添加一段pthread_attr_setstacksize函数的使用代码(摘自网上http://blog.csdn.net/godleading/article/details/7997630)。供自己和其他并不是太熟悉这个函数的朋友学习。
pthread_t thread_id;
int ret ,stacksize = 20480; /*thread 堆栈设置为20K,stacksize以字节为单位。*/
pthread_attr_t attr;
ret = pthread_attr_init(&attr); /*初始化线程属性*/
if (ret != 0)
return -1;
ret = pthread_attr_setstacksize(&attr, stacksize);
if(ret != 0)
return -1;
ret = pthread_create (&thread_id, &attr, &func, NULL);
if(ret != 0)
return -1;
ret = pthread_attr_destroy(&attr); /*不再使用线程属性,将其销毁*/
if(ret != 0)
return -1;
相关文章推荐
- Unix/Linux产生core文件的调试和core文件大小限制的修改
- Unix/Linux产生core文件的调试和core文件大小限制的修改
- [转载] Linux 下产生和调试core文件
- Linux下core文件产生的一些注意问题
- Linux---ubuntu下core文件的产生与使用
- 在Linux下产生并调试core文件
- linux下产生core文件以及不产生core文件的条件-----调试例程
- Linux下发生段错误时如何产生core文件-转
- gdb用法(二) 在Linux下产生并调试core文件
- Linux core文件的产生和调试
- linux下产生core文件以及不产生core文件的条件
- 在Linux下产生并调试core文件
- Linux下产生并调试core文件
- linux 抓堆栈 core文件分析
- 在Linux下产生并调试core文件
- Linux设置产生core文件及生成路径名
- 在Linux下产生并调试core文件
- 在Linux下产生并调试core文件
- Linux下core文件产生的一些注意问题
- 在Linux下产生并调试core文件