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 <iostream>
#include <stdio.h>

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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容