ClickHouse物理機生成core文件配置

ClickHouse物理機生成core文件配置

通常情況下,core文件會包含了程序運行時的內(nèi)存,寄存器狀態(tài),堆棧指針,內(nèi)存管理信息還有各種函數(shù)調(diào)用堆棧信息等,我們可以理解為是程序工作當前狀態(tài)存儲生成第一個文件,許多的程序出錯的時候都會產(chǎn)生一個core文件,通過工具分析這個文件,我們可以定位到程序異常退出的時候?qū)亩褩U{(diào)用等信息,找出問題所在并進行及時解決。

先決條件

產(chǎn)生coredump的條件,首先需要確認當前會話的ulimit -c,若為0,則不會產(chǎn)生對應的coredump,需要進行修改和設置。ulimit -c unlimited (可以產(chǎn)生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'

//指定內(nèi)核所生成的coredump文件的文件名。例如,使用下面的命令使kernel生成名字為core.filename.pid格式的core dump文件:這樣配置后,產(chǎn)生的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

調(diào)試現(xiàn)場

image.png
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容