<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          新手使用 Macos CLion 搭建MySQL源碼debug環(huán)境

          共 3658字,需瀏覽 8分鐘

           ·

          2021-09-26 19:21

          看了很多MySQL 的原理分析文章,懂了一些,但是沒有看源碼,總感覺些許缺憾,于是趁著假期,搭建一套debug環(huán)境,為后續(xù)驗(yàn)證原理以及自己的猜想做準(zhǔn)備。

          網(wǎng)上一些文章操作,里面有些步驟跳過比較嚴(yán)重,加之自己對(duì)Clion /c++ 不熟悉,導(dǎo)致搭建過程失敗。前后折騰了2天,現(xiàn)調(diào)試通過,整理一下,方便后來人。如果有文章沒有涉及到的問題,也歡迎留言溝通~

          環(huán)境配置如下:

          macOS Mojave 版本10.14.6
          Clion 2020.1
          MySQL version: 5.5.62
          復(fù)制代碼

          1 編譯 與安裝 MySQL 源碼

          1.1 download source code

          跳轉(zhuǎn)到你的路徑下:

          cd {path_to_build}
          復(fù)制代碼

          代碼地址:cdn.mysql.com//Downloads/…

          如果有wget ,可以使用 wget 下載

          wget https://cdn.mysql.com//Downloads/MySQL-5.5/mysql-5.5.62.tar.gz
          復(fù)制代碼

          如果沒有,自己在瀏覽器上輸入指令直接下載即可。然后copy 到 安裝路徑下面。

          cp mysql-5.5.62.tar.gz {path_to_build}
          復(fù)制代碼

          1.2 解壓

          tar zxvf mysql-5.5.62.tar.gz
          復(fù)制代碼

          1.3 跳轉(zhuǎn)到代碼路徑里面,然后創(chuàng)建build 路徑

          cd mysql-5.5.62
          mkdir -p build_out/data

          復(fù)制代碼

          1.4 編譯

          cmake . -DWITH_DEBUG=1 \
          -DDOWNLOAD_BOOST=1 \
          -DWITH_BOOST=/Users/xxx/cppProject/boost \
          -DCMAKE_INSTALL_PREFIX=build_out \
          -DMYSQL_DATADIR=build_out/data


          復(fù)制代碼

          然后執(zhí)行編譯。

          make && make install
          復(fù)制代碼

          1.4.1 編譯問題:boost 缺失問題

          注意:開始時(shí)并沒有指定boost, 但是因?yàn)橛捎谖冶镜貨]有boost, 所以會(huì)失敗。

          CMake Error at cmake/boost.cmake:88 (MESSAGE):
          You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>
          復(fù)制代碼

          加一下如下配置即可:

          -DDOWNLOAD_BOOST=1 \
          -DWITH_BOOST=/Users/xxx/cppProject/boost \
          復(fù)制代碼

          其中 /Users/xxx/cppProject/boost 為 你指定的boost 地址,如果沒有需要手動(dòng)創(chuàng)建好一個(gè)。

          1.4.2  編譯問題:openssl 版本過低的問題

          mac上默認(rèn)安裝openssl 是 1.0.2s 版本,而MySQL 要求1.1.1 及以上的版本。解決方案:

          步驟1、安裝openssl 高版本
          brew install [email protected]
          步驟2、建立軟鏈
          mv /usr/local/opt/openssl /usr/local/opt/openssl.bak
          ln -s /usr/local/opt/[email protected] /usr/local/opt/openssl

          復(fù)制代碼

          如果不建軟鏈,在cmake 的時(shí)候,會(huì)去找 /usr/local/opt/openssl 還是會(huì)找到老版本。

          1.5 初始化數(shù)據(jù)庫

           cd build_out 
          scripts/mysql_install_db
          復(fù)制代碼

          2 下載CLion

          下載地址:www.jetbrains.com/clion/網(wǎng)上有破解版,不過還是建議您使用正版~

          3 配置CLion

          3.1 創(chuàng)建cmake 工程

          3.2 找到mysql-5.5.62 文件夾,導(dǎo)入

          3.3 導(dǎo)入【Open Existing Project】

          由于對(duì)于CLion 以及cmake 不熟悉,我在這一步犯錯(cuò)了。我們前面已經(jīng)編譯完 mysql 了,所以這兒不能再按照新項(xiàng)目導(dǎo)入,而是應(yīng)該選擇open Existing Project

          3.4 配置cmake 參數(shù)

          填入我們?cè)?編譯環(huán)節(jié)的cmake 執(zhí)行到CMake options: [注意 WITH_BOOST 要改為你自己的路徑地址]

          cmake . -DWITH_DEBUG=1 \
          -DDOWNLOAD_BOOST=1 \
          -DWITH_BOOST=/Users/xxx/cppProject/boost \
          -DCMAKE_INSTALL_PREFIX=build_out \
          -DMYSQL_DATADIR=build_out/data
          復(fù)制代碼

          然后選擇Apply, OK 即可。

          待CMake編譯完,選擇mysqld 。

          3.5 配置mysqld 參數(shù)

          從下面這個(gè)地方進(jìn)入:

          增加 --default-file 參數(shù), 指定配置讀取的位置

          --defaults-file=/Users/xxx/cppProject/mysql_source/mysql-5.5.62/build_out/my.cnf
          復(fù)制代碼

          my.cnf 的配置如下:

          [mysqld]
          log-error=log.err
          datadir=/Users/xxx/cppProject/mysql_source/mysql-5.5.62/build_out/data
          pid-file=user.pid
          skip-grant-tables
          innodb_file_per_table=1
          port=33060
          transaction_isolation = READ-COMMITTED
          ## lc-messages-dir用來指定信息路徑, 這個(gè)是編譯之后的路徑。路徑添加規(guī)則見下文。
          lc-messages-dir= /Users/xxx/cppProject/mysql_source/mysql-5.5.62/build_out/share/

          [client]
          default-character-set = utf8mb4
          [mysqld]
          character-set-server=utf8mb4
          collation-server=utf8mb4_unicode_ci
          [mysql]
          default-character-set = utf8mb4

          復(fù)制代碼

          lc-messages-dir 不添加,會(huì)報(bào)錯(cuò)。

          2021-09-21T12:06:49.320795Z 0 [ERROR] Can't find error-message file '/Users/xxx/cppProject/mysql_source/mysql-5.7.32/build_out/share/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.
          復(fù)制代碼

          添加規(guī)則:

          需要到share 這一層,因?yàn)榧虞d時(shí)  路徑為  share那一層饑渴。

          Basically, mysqld first tries to look for the file under

          lc_messages_dir + language + errmsg.sys (in my case, /usr/local/mysql/data/english/errmsg.sys)

          https://bugs.mysql.com/bug.php?id=67576

          復(fù)制代碼

          4 啟動(dòng)與調(diào)試

          4.1 debug 模式啟動(dòng) mysqld

          第一次比較慢,耐心等待一下~ 出現(xiàn)下圖,就說明啟動(dòng)起來了:

          我們看下本地端口:

          lsof -i:33060

          復(fù)制代碼

          端口已經(jīng)啟動(dòng)起來了,good~

          4.2 使用navicate 連接

          注意我們的端口是 33060

          初始化時(shí) 我們并沒有給root 設(shè)置密碼,所以連接時(shí)密碼為空即可。

          4.3 打斷點(diǎn)與調(diào)試

          比如我們?cè)?do_command 這兒加斷點(diǎn),navicate 連接時(shí),就會(huì)停在這兒了。

          瘋狂F9 之后,跳過了斷點(diǎn),我們看到已經(jīng)連接成功了。

          來看下navicate 視角, 圖標(biāo)已經(jīng)亮了,也已經(jīng)鏈接成功了。

          附錄 參考文獻(xiàn)

          MySQL 源碼編譯

          ssl升級(jí)


          作者:chainerup
          鏈接:https://juejin.cn/post/7010679277955842062
          來源:掘金
          著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。



          瀏覽 158
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产一区二区三区无码 | 日韩在线观a片高清 | 九九九免费在线视频 | 巨乳美女被操 | 日本免费色视频 |