1. 程式人生 > 其它 >vscode 搭建mysql原始碼除錯環境(轉)

vscode 搭建mysql原始碼除錯環境(轉)

轉載:
https://www.modb.pro/db/111795

作業系統:MAC OS 11.5.2

MySQL原始碼版本:8.0.26

VSCode版本: 1.60.0

1、編譯安裝MySQL
1、MySQL原始碼下載,建議下載自帶boost的版本

https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-boost-8.0.26.tar.gz

2、安裝cmak,建議用brew安裝

brew install cmake
brew install gcc
3、編譯安裝MySQL

cd 
cmake . -DCMAKE_INSTALL_PREFIX=/Users/yangminghan/Documents/mysql -DMYSQL_DATADIR=/Users/yangminghan/Documents/mysql/data -DWITH_DEBUG=1  -DSYSCONFDIR=/usr/local/  -DMYSQL_TCP_PORT=3306  -DWITH_BOOST=/Users/yangminghan/Documents/mysql-8.0.26/boost    -DFORCE_INSOURCE_BUILD=1

make && make install

export PATH=$PATH:/Users/yangminghan/Documents/mysql/bin

#將之前安裝的mysql刪除
brew list
brew uninstall mysql

#編輯配置檔案
/Users/yangminghan/Documents/mysql/my.cnf
#初始化
mysqld --defaults-file=/Users/yangminghan/Documents/mysql/my.cnf --user=yangminghan --initialize
#啟動服務
mysqld_safe --defaults-file=/Users/yangminghan/Documents/mysql/my.cnf &
#建立使用者修改密碼
alter user 'root'@'localhost' identified by 'Tcdn@2007';
create user 'root'@'%' identified by 'Tcdn@2007';
grant all privileges on *.* to 'root'@'%' with grant option;
2、安裝配置VSCode
1、官網下載mac版本 https://code.visualstudio.com/Download
1.png

2、安裝外掛

CodeLLDB,C/C++,C/C++ Clang Command Adapter,Code Runner
2.png

3、在vscode中開啟MySQL原始碼
3.png
4.png

3、啟動除錯
進入執行與除錯功能
5.png

編輯launch.json,其中type填寫lldb,program填寫編譯好的可執行檔案,args填寫啟動引數

{
    // 使用 IntelliSense 瞭解相關屬性。 
    // 懸停以檢視現有屬性的描述。
    // 欲瞭解更多資訊,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "launch",
            "type": "lldb",
            "request": "launch",
            "program": "/Users/yangminghan/Documents/mysql/bin/mysqld",
            "args": ["--defaults-file=/Users/yangminghan/Documents/mysql/my.cnf","--user=yangminghan"],
        }
    ]
}
F5或點選執行按鈕,啟動除錯
6.png

從控制檯輸出可以看到MySQL程序已啟動,在終端上可以正常登陸
7.png
8.png

打斷點除錯
在 sql/sql_parse.cc do_command上打一個斷點
9.png

執行一個簡單的insert操作,可以看到在事務提交時binlog.cc中會根據事件的 binlog_format 返回有關快取內容的資訊。當may_have_sbr_stmts為false時代表事務是rbr_only的,這時將在binlog中列印語句將事務隔離級別更改為 READ COMMITTED,已加快備庫應用binlog的速度
10.png
11.png
12.png

原始碼除錯可以加深對MySQL架構、細節的理解,但需要花費較多時間逐漸積累。

以上只是一個搭建環境的簡單記錄,有興趣的同學可以自己嘗試。