vscode 搭建mysql原始碼除錯環境(轉)
阿新 • • 發佈:2022-03-10
轉載:
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架構、細節的理解,但需要花費較多時間逐漸積累。 以上只是一個搭建環境的簡單記錄,有興趣的同學可以自己嘗試。