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架构、细节的理解,但需要花费较多时间逐渐积累。

以上只是一个搭建环境的简单记录,有兴趣的同学可以自己尝试。

posted on 2022-03-10 22:42  柴米油盐酱醋  阅读(881)  评论(0编辑  收藏  举报

导航