ClickHouse物理机生成core文件配置

ClickHouse物理机生成core文件配置

通常情况下,core文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,我们可以理解为是程序工作当前状态存储生成第一个文件,许多的程序出错的时候都会产生一个core文件,通过工具分析这个文件,我们可以定位到程序异常退出的时候对应的堆栈调用等信息,找出问题所在并进行及时解决。

先决条件

产生coredump的条件,首先需要确认当前会话的ulimit -c,若为0,则不会产生对应的coredump,需要进行修改和设置。ulimit -c unlimited (可以产生coredump且不受大小限制),这种设置仅对当前生效,如果想永久生效那么需要在/etc/profile中加入以下一行,

这将允许生成coredump文件:ulimit-c unlimited 。

更改core dump 路径

sudo mkdir -p /media/diskpool/core

sudo chown -R clickhouse:clickhouse /media/diskpool/core/

sudo bash -c 'echo /media/diskpool/core/core.%e.%p > /proc/sys/kernel/core_pattern'

//指定内核所生成的coredump文件的文件名。例如,使用下面的命令使kernel生成名字为core.filename.pid格式的core dump文件:这样配置后,产生的core文件中将带有崩溃的程序名、以及它的进程ID。上面的%e和%p会被替换成程序文件名以及进程ID。

验证是否生效

code

#include 
#include 

using namespace std;
void core_test1()
{
    int i = 0;
    scanf("%d", i);
    printf("%d", i);

}

int main()
{
    core_test1();
    return 0;
}

编译

g++ -g ctest.cpp -o ./ctest

运行

image.png

调试现场

image.png

你可能感兴趣的:(ClickHouse物理机生成core文件配置)