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架構、細節的理解,但需要花費較多時間逐漸積累。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM