Ubuntu平台下使用visual studio code调试mysql8.x源码

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值