本人第一次写博客写得不好请哆包涵。
最近碰到一个事情公司开发的时候(linux下的c++开发),生成的core文件多达120多G导致调试起来非常艰难。工程中用到了rocketmq的客户端模块发现這部分模块启动前后相差了100G,刚好这一模块是本人添加的按道理由我查找原因。
通过assert(0)添加断言的方法本人发现在生产者或者消费者启動(即调用start()函数)前后,产生了如此巨大的core文件差异继续往里调试,发现每一个线程被创建之后产生的core文件相差了400M,结果发现跟操作系统默认设置的堆栈大小相同通过查询相关线程函数。发现pthread_attr_setstacksize是用于为线程设置堆栈大小的函数
通过使用修改操作系统的默认堆栈大小囷程序中静态调用pthread_attr_setstacksize函数的方法,果然将core文件的大小降下来了
ps:本次事件是一个乌龙事件,是一位同事为了解决另一个问题修改了堆栈大小