濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > redis debug環(huán)境搭建過程詳解(使用clion)

redis debug環(huán)境搭建過程詳解(使用clion)

熱門標(biāo)簽:溫嶺代理外呼系統(tǒng) 怎么更改地圖標(biāo)注電話 交行外呼系統(tǒng)有哪些 隨州銷售外呼系統(tǒng)平臺(tái) 激戰(zhàn)黃昏地圖標(biāo)注說(shuō)明 防城港市ai電銷機(jī)器人 不同的地圖標(biāo)注 臨滄移動(dòng)外呼系統(tǒng)哪家有 寧夏保險(xiǎn)智能外呼系統(tǒng)哪家好

概要

最近寫了spring系列,這個(gè)系列還在進(jìn)行中,然后有些同學(xué)開始叫我大神,然后以為我各方面都比較厲害,當(dāng)然了,我是有自知之明的,大佬大神什么的,當(dāng)作一個(gè)稱呼就好,如果真的以為自己就是大神,那可能就走偏了。

其實(shí)我不少方面都比較薄弱,比如redis、mysql、jvm這些c語(yǔ)言寫的東西,很多書,我也看過多次,看的那段時(shí)間,你可能懂了,也可以在面試的時(shí)候,侃侃而談,但是,過一陣再問你,你可能部分細(xì)節(jié)已經(jīng)記不住了。

我現(xiàn)在本科畢業(yè)快7年,雖然這些年一直也在學(xué),但是記憶這東西,好像是有些退化,記個(gè)東西,感覺確實(shí)越來(lái)越容易忘;尤其,是這些平時(shí)光看不練的東西。

所以,打算在實(shí)踐中,來(lái)掌握這些東西。

比如,你說(shuō)redis的字符串的底層實(shí)現(xiàn),很多人可能都能答上來(lái),是sds,但是只是看,只是記,這種簡(jiǎn)單的還好,復(fù)雜一點(diǎn)的,兩個(gè)月肯定忘。

所以,我們就希望,能夠把redis的源碼拉下來(lái)看,看的過程,你可以自己在源文件里加注釋;同時(shí),也要支持debug,來(lái)觀察程序的運(yùn)行過程,來(lái)看看,一個(gè)請(qǐng)求進(jìn)來(lái),是怎樣編解碼,怎么樣被處理的,怎么樣返回結(jié)果的,網(wǎng)絡(luò)通信怎么做的,這之類的。

我們選擇的代碼,是Redis暢銷書,Redis設(shè)計(jì)與實(shí)現(xiàn)(第二版)里配套的代碼,作者已經(jīng)加了很多注釋,我們可以結(jié)合代碼、書一起來(lái)學(xué)習(xí),合適的情況下,我們也要能寫一個(gè)小demo,實(shí)踐實(shí)踐。

所以,第一步的環(huán)境搭建尤為重要,而且,redis看懂了,相信以后看mysql,也不會(huì)問題特別大。當(dāng)然,需要一些c語(yǔ)言基礎(chǔ),我也會(huì)在文章里講一些,我自己也是半斤八兩,邊看邊學(xué)唄,還能怎么樣呢?

這個(gè)系列,估計(jì)會(huì)更新比較慢,因?yàn)槲业腸語(yǔ)言基礎(chǔ),也不是很好。

好了,我們開始吧。

環(huán)境搭建的大體思路

windows下安裝linux工具鏈

大家記得在linux上,怎么安裝redis那些的吧,是不是有個(gè)configure,make,make install啥的,為啥java程序不需要這么弄呢?因?yàn)閖ava有jvm,我們的java文件是編譯成class,在jvm上運(yùn)行的,而c語(yǔ)言程序,是直接依賴于操作系統(tǒng)的,同樣的c語(yǔ)言程序,比如你要實(shí)現(xiàn)網(wǎng)絡(luò)功能,在windows上和在linux上,要調(diào)用的api,是不一樣的,總之呢,就是c語(yǔ)言程序,是嚴(yán)重依賴于底層的操作系統(tǒng)。

切回正題,在linux下我們是用gcc來(lái)編譯c語(yǔ)言程序的,比如,針對(duì)以下這個(gè)簡(jiǎn)單的helloWorld:

#include stdio.h>

int main(void) {
    printf("hahha");
    return 0;

}

要像下面這樣,用gcc編譯為二進(jìn)制,才能繼續(xù)執(zhí)行:

gcc、make這些都是linux下的工具,在windows下怎么辦呢?這個(gè)不用擔(dān)心,早有人幫我們弄好了,前輩們將這些linux下的工具,移植到了windows下,現(xiàn)在有兩種主流方案,一種是MinGW,另一種是cygwin。

我們只需要安裝這兩種軟件中的一種,就可以在windows下使用本來(lái)在linux下才能使用的工具了,上面那個(gè)圖,就是我在windows下截的。

至于MinGW和cygwin的差別,大家自行去查詢,因?yàn)槲艺伊诵┐鸢?,感覺都有些沖突。我們的需求比較簡(jiǎn)單,兩種都可以滿足,我這邊選擇了cygwin,建議大家和我這邊保持一致。

cygwin呢,在安裝過程中,會(huì)讓我們選擇要安裝的工具,比如gcc、g++(c++時(shí)候使用)、make、cmake等,我們可以按需選擇。

什么是make和cmake

大家參考這個(gè)鏈接:CMake與Make最簡(jiǎn)單直接的區(qū)別

看完這個(gè)之后,我再簡(jiǎn)單說(shuō)說(shuō),我的理解是,一個(gè)程序,在linux下運(yùn)行,你要寫一份makefile;如果要弄到其他平臺(tái),這個(gè)makefile就用不了了,要再寫一份。

所以,為了跨平臺(tái),出現(xiàn)了cmake,cmake是讓程序員用統(tǒng)一的語(yǔ)法來(lái)寫cmake文件,然后cmake會(huì)幫助我們生成對(duì)應(yīng)的平臺(tái)下的makefile。

果然是,沒有什么是加一個(gè)中間層不能解決的。

對(duì)于java的同學(xué),可理解為:cmake就像jvm一樣,幫助我們跨平臺(tái)。

cmake呢,也是通過前面的cygwin來(lái)安裝的。

安裝c語(yǔ)言開發(fā)的ide

這個(gè)呢,我咨詢了兩位朋友,做c的,然后他們都是用的visual studio,我一開始也是下載這個(gè),但是比較大,我下載的visual studio 2012(應(yīng)該是比較老的版本了),都要1.5g,下載花了就比較久,安裝又是半個(gè)小時(shí),然后裝完還不怎么會(huì)用;

在上面的vs下載的過程中,我在網(wǎng)上找了下,也有很多使用jetbrains公司出的 clion。這個(gè)呢,我目前就是用的這款,最大的好處是,它和idea、pycharm這些一樣,同一個(gè)公司出的,所以,操作界面、操作習(xí)慣、包括快捷鍵,幾乎都是差不多的,可以無(wú)縫切換。

一開始,我安裝的是clion 2018.3 版本,然后遇到個(gè)問題,也不知道怎么解決,就又下了clion 2019.1版本,問題還是沒解決,最后換了clion 2019.3版本,問題還是在,不過雖然問題一直在,但其實(shí)也無(wú)關(guān)大局,就忍一忍算了。

期間,visual studio 2012終于下載完了,裝了半個(gè)小時(shí)多,發(fā)現(xiàn)用著還是不太習(xí)慣,而且,好像不太支持導(dǎo)入cmake工程,干脆就卸了,結(jié)果,卸載又花了半天,因?yàn)樗o我的電腦,裝了近20個(gè)軟件。。。我他么。。。

所以,最終我這邊的ide是 clion 2019.3,下載鏈接:clion 2019.3 鏈接

Clion2020.2.x最新激活碼破解版附安裝教程(Mac Linux Windows)

具體安裝步驟

cygwin安裝

安裝前,先下載,下載鏈接:cygwin官網(wǎng),在這里,目前下載下來(lái)的版本,是3.1.4.1,為什么要強(qiáng)調(diào)版本,因?yàn)閏lion,不同的clion版本,支持的 cygwin版本不一樣,我看網(wǎng)上都沒人提過。

clion為啥要依賴cygwin,因?yàn)閏lion只是個(gè)ide,具體的代碼編譯之類的,還是要gcc、cmake這些來(lái)做的,我給大家看下,我一開始下載的2018.3版本,配置了我的cygwin之后,提示如下:

這也是為什么后來(lái),遇到問題我要升級(jí)版本的原因,因?yàn)槲铱偢杏X,有可能是這里的問題,雖然升級(jí)了版本,問題也還在。

建議大家還是和我版本保持一致。

  • cygwin:3.1.4.1
  • clion:2019.3

大概的安裝步驟,可以看這個(gè):

https://www.jb51.net/article/187586.htm

https://www.jb51.net/article/193502.htm

注意的是,下面這個(gè)路徑要記住,后面會(huì)用:

然后,在設(shè)置鏡像網(wǎng)站時(shí),我是用的阿里云:http://mirrors.aliyun.com/cygwin/

接下來(lái),就是讓我們選擇要安裝的東西,網(wǎng)上一般給的就是如下幾個(gè):

gcc-core、gcc-g++、make、gdb、binutils ,我建議大家把vim也裝上,方便操作。

然后就是等它安裝完成,完成后,桌面上會(huì)有如下圖標(biāo):

然后,雙擊打開,可以依次執(zhí)行以下命令:

  • cygcheck -c cygwin ,查看安裝的cygwin版本信息
  • gcc --version ,查看安裝的gcc版本信息,這個(gè)是編譯c的
  • g++ --version,查看安裝的g++版本信息,這個(gè)是編譯c++的
  • gdb --version,查看gdb版本信息,這個(gè)是debug用的,非常出名

如果都沒啥問題的話,那基本就安裝好了。

然后,大家還記得前面安裝時(shí),選擇的路徑嗎?把那個(gè)路徑的bin目錄,加到path這個(gè)環(huán)境變量,然后我們就可以在cmd里用上面那些命令了。

clion安裝及插件安裝

下載鏈接:clion 2019.3 鏈接

這個(gè)的安裝,和idea的安裝,沒啥差別,不過大家不要選太多插件,很多畢竟用不上,按需選擇吧。比如什么cvs、svn那些,裝了干啥呢,對(duì)吧。

然后我自己直接用的試用30天,等到后續(xù)真需要破解再說(shuō)。

安裝過程中,可能就會(huì)讓大家配置tool chains,直接輸入前面的cygwin的目錄即可。

從上面可以看到,我們這里,用的cmake,就是cygwin下的,gdb也是的。

然后,我們可以再安裝兩個(gè)插件(Cmake Sinple highlighter 和 CMake Plus),如下:

其中一個(gè)要付費(fèi),不過可以先試用。

克隆redis 代碼

地址:https://gitee.com/ckl111/redis-3.0-annotated-cmake-in-clion

這里感謝前輩博客:https://www.jb51.net/article/218312.htm

我這里基于他的博客,對(duì)cmake 文件,做了少許的修改。

大家把代碼克隆到本地后,然后在clion中,打開工程即可。

打開工程后,大家要注意上面的CMakeList.txt,其中,已經(jīng)默認(rèn)給我們配置了幾個(gè)target:

其中,庫(kù)應(yīng)該是不能獨(dú)立運(yùn)行的,我們可以運(yùn)行下面的三個(gè),其中:

  • redis-cli,redis客戶端
  • redis-server,服務(wù)端
  • redis-example,這個(gè)是我自己加的,主要是希望:可以像在java中那樣,啟動(dòng)一個(gè)main方法,去測(cè)試一些工具類啊或者啥的,不然的話,就得寫到redis-server的代碼中,然后用redis-cli去訪問,去觸發(fā)我們的測(cè)試代碼。主要是類似于一個(gè)測(cè)試用的入口。

redis-example,我還多說(shuō)一點(diǎn),仔細(xì)看CmakeList.txt,可能就理解了:

如何調(diào)試

拿redis-example舉例:

不過這里的debug,有一點(diǎn)問題,就是會(huì)開一個(gè)單獨(dú)的cmd窗口,而不是直接在Console中輸出;printf也有點(diǎn)問題。

但是,使用run方式運(yùn)行,則沒有任何問題。

如何調(diào)試redis-server

方法和上面一樣,其實(shí)大家更關(guān)心斷點(diǎn)打在哪兒吧,可以打在下面這個(gè)地方:

redis.c文件的processCommand,這里我還加了一行注釋給大家:

int processCommand(redisClient *c) {
    /* The QUIT command is handled separately. Normal command procs will
     * go through checking for replication and QUIT will cause trouble
     * when FORCE_REPLICATION is enabled and would be implemented in
     * a regular command proc. */
    // 特別處理 quit 命令
    void *commandName = c->argv[0]->ptr;
    redisLog(REDIS_NOTICE, "The server is now processing %s", commandName);

調(diào)試如下:

redis-cli,我們可以就用工程給我們生成的那個(gè),版本是配套的:

可以看到,斷點(diǎn)已經(jīng)生效了,且,客戶端的請(qǐng)求已經(jīng)到達(dá)。

到此這篇關(guān)于redis debug環(huán)境搭建過程詳解(使用clion)的文章就介紹到這了,更多相關(guān)redis clion debug環(huán)境搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • CentOS 安裝 PHP5.5+Redis+XDebug+Nginx+MySQL全紀(jì)錄
  • Windows環(huán)境下Redis Cluster環(huán)境搭建(圖文)
  • 詳解docker搭建redis集群的環(huán)境搭建

標(biāo)簽:忻州 紅河 青海 沈陽(yáng) 哈密 無(wú)錫 河源 阜陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《redis debug環(huán)境搭建過程詳解(使用clion)》,本文關(guān)鍵詞  redis,debug,環(huán)境,搭建,過程,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《redis debug環(huán)境搭建過程詳解(使用clion)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于redis debug環(huán)境搭建過程詳解(使用clion)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    雷波县| 晴隆县| 南投市| 稷山县| 曲麻莱县| 广宗县| 凤阳县| 廊坊市| 庆云县| 墨竹工卡县| 双峰县| 寻乌县| 裕民县| 泗洪县| 茂名市| 杨浦区| 新建县| 合肥市| 双鸭山市| 三台县| 阜南县| 岑溪市| 大埔区| 江源县| 上杭县| 全南县| 晋宁县| 阳朔县| 正安县| 晴隆县| 兴城市| 库车县| 柘荣县| 英吉沙县| 正阳县| 女性| 钦州市| 昌平区| 孙吴县| 阳江市| 简阳市|