2021-05-20 clickhouse 調(diào)試環(huán)境搭建

下載clickhouse 代碼

git clone --recursive https://github.com/ClickHouse/ClickHouse.git

使用clion打開工程

clickhouse 默認使用clang編譯,使用ninja構(gòu)建,
但是由于clion使用make構(gòu)建工程,所以不用裝ninja了:

安裝 clang-8

echo "deb [trusted=yes] http://apt.llvm.org/bionic/ llvm-toolchain-bionic-8 main" | sudo tee /etc/apt/sources.list.d/llvm.list
sudo apt-get update
sudo apt-get install clang-8

配置clion的settings
編譯時只起一個線程 -j 1

執(zhí)行server

/data1/mycode/ClickHouse/programs/server/config.xml

./cmake-build-debug/programs/clickhouse-server --config=/data1/mycode/ClickHouse/programs/server/config.xml --pid-file=/data1/mycode/ClickHouse/clickhouse-server.pid

attch 進程進行調(diào)試

報錯:
顯示 ptrace: Operation not permitted.

解決:
(1)臨時方法

將/proc/sys/kernel/yama/ptrace_scope虛擬文件的內(nèi)容設(shè)為0。

echo 0 > /proc/sys/kernel/yama/ptrace_scope

重啟之后失效。

(2)永久解決

編輯/etc/sysctl.d/10-ptrace.conf這個文件,若沒有,創(chuàng)建之。設(shè)置(默認是1)

kernel.yama.ptrace_scope = 0

通過 gdb server 調(diào)試已經(jīng)啟動的clickhouse server

gdbserver localhost:2333 --attach [clickhouse server pid]
GDB_Remote_Debug_Config

通過 attach 直接調(diào)試

<img src="C:\Users\jiangzhihao\AppData\Roaming\Typora\typora-user-images\image-20210520143455777.png" alt="image-20210520143455777" style="zoom:67%;" />

代碼結(jié)構(gòu)

main 函數(shù)

programs/main.cpp

主程序會根據(jù)指令分發(fā)到 programs 目錄下的程序中處理, 目前關(guān)注server ,

所以分發(fā)到programs/server/Server.cpp


打斷點的位置

#src/Server/TCPHandler.cpp

TCPHandler.runImpl()
{
    ...
    while(true) {
        receivePacket()

        /// Processing Query
        state.io = executeQuery(state.query, query_context, false, state.stage);

        if (state.io.out)
            state.need_receive_data_for_insert = true;

        if (state.need_receive_data_for_insert)
            processInsertQuery(global_settings);
        else
            processOrdinaryQuery();

    ...     
}

登錄server 執(zhí)行命令 , 會停留在斷點處

./cmake-build-debug/programs/clickhouse-client

> select database()

問題

1. 調(diào)試環(huán)境占用內(nèi)存較高 最少 14G內(nèi)存 

所以調(diào)試環(huán)境一直運行不起來 , 目前只能看文章學(xué)習(xí)

直接使用gdb調(diào)試

安裝 gdb

apt -y install gdb

gdb 啟動進程

gdb --args ./cmake-build-debug/programs/clickhouse-server --config=/data1/mycode/ClickHouse/programs/server/config.xml --pid-file=/data1/mycode/ClickHouse/clickhouse-server.pid

設(shè)置斷點

break 文件名 : 行號

b src/Server/TCPHandler.cpp:168

開始運行

r 

查看運行位置代碼

l

刪除斷點

delete 4

文檔

http://c.biancheng.net/view/8153.html

sublime gdb調(diào)試環(huán)境

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

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

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