Ubuntu平台下使用visual studio code调试mysql8.x源码
参考网址:https://www.eversql.com/why-and-how-build-debug-mysql-from-source-code/
1 下载ubuntu16.x建好虚拟系统。http://mirrors.aliyun.com/ubuntu-releases/16.04/
磁盘空间最好设置为40G或者更大,磁盘空间开始分配好就不能进行扩充,否则虚拟器启动不了。
备注:
如果windows主机没有开启代理则虚拟机设置为桥接模式速度更快。
如果windows主机开启网络代理则虚拟机必须设置NAT模式。
2 下载mysql8.x源码包,解压到指定目录。下载地址:
https://github.com/mysql/mysql-server
更新包:sudo apt-get update
设置root密码:sudo passwd root
3 切换超级用户修改文件权限 chmod -R 777 ./*
4 安装依赖
sudo apt install cmake libssl-dev libzstd-dev libncurses5-dev libreadline-dev bison pkg-config
5 接下来,我们创建构建输出目录,并进行构建。需要使用root权限
* cmake参数将为调试做准备,还将自动下载boost,这是构建MySQL的先决条件。
如果此时出现错误需要删除./build下所有文件,/root/boost_**文件,重新cmake.
cd mysql-8.0.14
mkdir build
cd build
cmake .. -DWITH_DEBUG=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=~/boost_1_69_0
这个过程需要大概30分钟,主要取决于boost网速下载速度。成功后会出现如下标记,并在root下后boost_1_69_0库。
6 开始编译。大概需要一个小时。
make
编译成功后在以下目录有生成的文件,主要是mysql mysqld
7 将./build目录下所有文件修改为超级权限,然后切换为普通用户初始化数据库。初始化数据库并尝试调试:
./build/bin/mysqld --initialize
此时mysql会随机生成一个密码,拷贝密码。当前进程阻塞,等待客户端连接。
./build/bin/mysqld --debug (可能进入死循环)
或者
./build/bin/mysqld
8 现在,在另一个终端选项卡中,您可以使用MySQL客户端连接到数据库,并更改密码:
./build/bin/mysql -u root -p 刚才的密码
ALTER USER 'root'@'%' IDENTIFIED BY "123456"
show databases;
这里就已经完成编译了。
如果使用sqlyog连接,需要修改加密方式,原因是mysql8.x采用新的加密方式而sqlyog不支持。
CREATE USER 'ww'@'%' IDENTIFIED BY '123456';
grant all privileges on *.* to 'ww'@'%';
ALTER USER 'ww'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
调试MySQL Server 8.x
1 要调试MySQL,可以使用Visual Studio Code,它是Microsoft的一种出色(免费)的IDE。首先下载并安装它。
安装后,我们需要从扩展存储库中安装C ++扩展,因为它不是其核心功能的一部分。此扩展将设置有效浏览和调试C ++代码所需的一切。
2 现在,请导航至左侧的“资源管理器”选项卡,然后选择“打开文件夹”。选择mysql-8.0.14作为源文件夹。
3 要设置调试器以调试mysqld进程,请从顶部菜单中选择:运行==>开始调试==> C ++(gdb)。当loader.json文件打开时,将程序参数设置为mysqld二进制文件的路径。
4 现在您可以开始调试了。
从菜单中再次选择Run ==> Start Debugging,完成后,MySQL将以调试模式启动。
找到sql/mysqld.cc 文件下的 int mysqld_main(int argc,char ** argv)入口函数启动调试
启动一个客户端连接mysql
这里就完成了调试功能。
代码阅读相关网站:
代码结构:
https://www.cnblogs.com/lushilin/p/6086833.html
查询流程:
https://blog.csdn.net/u010502974/article/details/96362601
源码分析:
https://wenku.baidu.com/view/d74d03c3b5daa58da0116c175f0e7cd18525180b.html