狠狠色丁香婷婷久久综合麻豆,国产99久久久久久免费看,与亲女洗澡时伦了视频,一面膜胸口一面膜下免费

ClickHouse如何在windows下編譯調(diào)試

今天就跟大家聊聊有關(guān)ClickHouse如何在windows下編譯調(diào)試,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

站在用戶的角度思考問題,與客戶深入溝通,找到桐廬網(wǎng)站設(shè)計與桐廬網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋桐廬地區(qū)。

什么是 ClickHouse

大數(shù)據(jù)時代,每一條數(shù)據(jù)都攜帶著一種信息,各種優(yōu)傳感器,網(wǎng)關(guān),IOT 設(shè)備無時無刻都在用日志輸出著自己的運行信息。這些信息被存儲后經(jīng)過多維度計算就組成了我們現(xiàn)在的大數(shù)據(jù)環(huán)境。為了便于計算,出現(xiàn)了非常多優(yōu)秀的數(shù)據(jù)庫及組件,他們都在自己擅長的領(lǐng)域解決著各種場景的問題,其中就有一款在 OLAP 場景下,以驚艷的性能指標(biāo)橫空出世的數(shù)據(jù)庫, 這就是 ClickHouse 。
它是保守的俄羅斯一家商業(yè)公司 Yandex (類似中國的百度)在 2016 年開源的。今天我并不打算講解 ClickHouse 有什么特性,因為當(dāng)你首先對這款數(shù)據(jù)庫感興趣時,有志者肯定第一想法是,“Talk is cheap, Show me the code?!?但對于大型工程,代碼下載是容易的,一些框架復(fù)雜,動態(tài)調(diào)用時才能清晰知道流程的項目,編譯出來調(diào)試一次,會對邏輯有更深的理解,也會降低閱讀難度,今天要講的便是如何編譯調(diào)試,尤其是在 windows 下利用強大的 Visual Studio 來調(diào)試 ClickHouse。

編譯準(zhǔn)備

我先預(yù)設(shè)大家的水平都會知道一些基礎(chǔ)編譯信息,這里只做要求:

  1. WSL 或者 CentOS 7, 我習(xí)慣于在 windows 下減少虛擬機消耗,這兩者環(huán)境區(qū)別不大;

  2. GCC 7.4.0,ClickHouse 大量運用了 C++17 語法,要求編譯器版本為 7.4;

  3. cmake 3.14.5, 這個下載包直接解壓,建立軟鏈即可

  4. ninja 1.9.0, 直接下載對應(yīng)包,解壓即可

  5. Visual Studio, 我用的是 VS2019

編譯過程

下載源碼

盡量在 linux 環(huán)境下(包括 WSL)使用 git 下載,應(yīng)該 ClickHouse 引用了很多外部開源工程,在拉取過程中有些源文件是會建立軟鏈接的,如果在 windows 下,這些軟鏈接會建立失敗,導(dǎo)致后期編譯時錯誤。也不用直接在 git 上下載源碼包,這樣外部引用的開源工程都不會被拉取,造成編譯不過。

// 拉取
git clone --recursive https://github.com/yandex/ClickHouse.git
cd ClickHouse

// 切換到 19.7 分支,或者一開始只拉取該分支代碼
git tag -l
git checkout v19.7.3.9-stable

開始編譯

mkdir build
cd build
cmake ..
ninja clickhouse

驗證編譯結(jié)果

dbms/programs/clickhouse server -V
ClickHouse server version 19.7.3.1

如果出現(xiàn)上面結(jié)果,那么你已經(jīng)成功了。
但,還沒有達(dá)到我們的目的,我們是需要在 windows 下調(diào)試起來。

調(diào)試編譯準(zhǔn)備

為什么要重新編譯

由于默認(rèn)情況下,ClickHouse 是編譯成靜態(tài)模塊,打包成一個大程序。為了便于后期更改代碼調(diào)試時減少鏈接時間,我們修改為編譯為動態(tài)鏈接庫的形式,這樣也可以逐模塊探索。還有,默認(rèn)情況下,ClickHouse 是非 DEBUG 模式的,由于在內(nèi)存管理這塊,在 DEBUG 和非 DEBUG 模塊下啟用的是不同算法。我們打算非調(diào)試的模塊依然用 ninja 調(diào)用 gcc 這一套編譯成 so 庫,在需要修改的代碼處用 Visual Studio 編譯,而 Visual Studio 在調(diào)試時,一般會是 DEBUG 模塊,所以其它模塊(ninja)在編譯時,我們預(yù)先改成 DEBUG 模式。

修改 CMake 配置文件

修改根目錄下 CMakeLists.txt, USE_STATIC_LIBRARIES 為 FALSE。

option (USE_STATIC_LIBRARIES "Set to FALSE to use shared libraries" FALSE)

重新編譯

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug 
ninja -j 4

檢查編譯結(jié)果

如果在 build/dbms 下面出現(xiàn)了 libdbmsd.so 庫,說明編譯成功!

創(chuàng)建 VS 工程

目前來講,我們應(yīng)該有了全量代碼,很多模塊已經(jīng)編成了 so 庫,我們現(xiàn)在要做的就是,添加一個 main.cpp 文件,調(diào)用接口跑起來我們關(guān)注的部分就成功了。

創(chuàng)建工程

在根目錄下創(chuàng)建 ClickHouse.sln, ClickHouse.vcxproj 兩個工程,工程類型為 Linux 工程,然后打開 VS 工程。如下圖:

ClickHouse如何在windows下編譯調(diào)試
注意:我用的是顯示所有文件視圖,并添加了一個 main.cpp 文件, 代碼如下,也是 Parser 下的測試用例。

#include <iostream>

#include <Parsers/ParserQueryWithOutput.h>
#include <Parsers/parseQuery.h>
#include <Parsers/formatAST.h>


int main(int, char **)
try
{
    using namespace DB;

    std::string input =
        " SELECT 18446744073709551615, f(1), '\\\\', [a, b, c], (a, b, c), 1 + 2 * -3, a = b OR c > d.1 + 2 * -g[0] AND NOT e < f * (x + y)"
        " FROM default.hits"
        " WHERE CounterID = 101500 AND UniqID % 3 = 0"
        " GROUP BY UniqID"
        " HAVING SUM(Refresh) > 100"
        " ORDER BY Visits, PageViews"
        " LIMIT LENGTH('STRING OF 20 SYMBOLS') - 20 + 1000, 10.05 / 5.025 * 5"
        " INTO OUTFILE 'test.out'"
        " FORMAT TabSeparated";

    ParserQueryWithOutput parser;
    ASTPtr ast = parseQuery(parser, input.data(), input.data() + input.size(), "", 0);

    std::cout << "Success." << std::endl;
    formatAST(*ast, std::cerr);
    std::cout << std::endl;

    return 0;
}
catch (...)
{
    std::cerr << DB::getCurrentExceptionMessage(true) << "\n";
    return 1;
}

配置遠(yuǎn)程編譯器

在 VS 的工具/選項下面配置一個遠(yuǎn)程管理器,這是 VS 的一個特性,可以通過 ssh 調(diào)用遠(yuǎn)端 gcc 和 gdb 用來編譯調(diào)試 linux 程序。

ClickHouse如何在windows下編譯調(diào)試

配置工程

配置頭文件

配置頭文件的列表,建議為編譯時看看頭文件在哪里,再添加進(jìn)去,然后重復(fù)上面的動作直至全部添加為止。

配置鏈接庫


把編譯出來的庫文件添加進(jìn)來。需要注意的是,這里的庫文件在存在于目標(biāo) linux 機器上。

調(diào)試運行

如果能如上圖斷點被命中,恭喜你,至此整個調(diào)試環(huán)境已經(jīng)可以跑起來了!

調(diào)試技巧

當(dāng)想要了解某一個模塊時,可以利用 VS 把想調(diào)試的源文件添加進(jìn)工程中(默認(rèn)是全部排除的),這時該文件會被 VS 自動拷貝到遠(yuǎn)端,并參與到工程編譯中,此時就可以對該文件打斷點調(diào)試了。

結(jié)束

盡情利用源碼來探究 ClickHouse 吧,源碼面前沒有秘密!

看完上述內(nèi)容,你們對ClickHouse如何在windows下編譯調(diào)試有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

本文標(biāo)題:ClickHouse如何在windows下編譯調(diào)試
路徑分享:http://www.hntjjpw.com/article2/goigoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、微信公眾號網(wǎng)頁設(shè)計公司網(wǎng)站排名、網(wǎng)站導(dǎo)航、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
主站蜘蛛池模板: 酉阳| 仁布县| 大英县| 绥滨县| 宜兴市| 五指山市| 罗田县| 金秀| 乐业县| 惠来县| 韩城市| 潍坊市| 柘城县| 浙江省| 淳安县| 新源县| 疏附县| 四平市| 平山县| 固原市| 周口市| 玛多县| 文水县| 开原市| 深水埗区| 金塔县| 隆安县| 莆田市| 郯城县| 德州市| 榆林市| 阳曲县| 长沙市| 磐安县| 弥渡县| 东兴市| 讷河市| 凤台县| 清流县| 铜鼓县| 察雅县|