Windows 下 MySQL 源码的学习环境搭建,debug版本,二次开发mysql,vscode中提供单步调试

MySQL源码调试环境搭建
最近在学习mysql数据库,学习的过程中记录了不少网络或书本上的知识,如果需要再深入学习的话,搭建一个源代码的调试环境来尝试深入学习一些数据库开发的知识

环境和工具准备

环境及软件准备

  • Win10
  • VMware WorkStation 14 PRO
  • CentOS7( 虚拟机中部署linux)
  • vscode
  • mysql-8.0.34源码包

CentOS7的下载

进入CentOS下载官网,找到64位的CentOS7版本。

下载everything版本和原版都可以,everything会多很多可以用的工具

创建新的虚拟机

创建虚拟机用的镜像文件选好刚刚下载的镜像

内存和cpu尽量设置多一点,不然虚拟机运行起来会很卡很慢,这也根据自己电脑去调配

安装好后,有一个问题是 CentOS7 默认 YUM 源的开发依赖包太老旧了,我需要使用 epel-release 的包来安装更加新的 Debug 依赖包。

打开终端,连好网络

# 创建存放源码的根目录
mkdir -p /root/code

# 进入存放源码的根目录
cd /root/code

# 安装 wget、下载源码 & 解压
yum install wget -y
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.34.tar.gz
tar zxvf mysql-boost-8.0.34.tar.gz

# 用于安装 cmake3 的 yum 源
yum -y install epel-release

# 用于安装高版本 gcc、gcc-c++、make 的 yum 源
yum -y install centos-release-scl

# 安装依赖软件
yum -y install devtoolset-11-gcc \
  devtoolset-11-gcc-c++ \
  devtoolset-11-make \
  cmake3 \
  openssl-devel \
  ncurses-devel \
  bison

# 安装 gdb
yum -y install devtoolset-11-gdb

# 让 scl 环境临时生效
source /opt/rh/devtoolset-11/enable

# 让 scl 环境永久生效
vi /etc/profile.d/scl.sh

# 把以下内容写入 scl.sh,然后保存退出
source /opt/rh/devtoolset-11/enable

编译安装 MySQL Debug 版


cd /root/code/mysql-8.0.34
cmake3 . \
-DWITH_BOOST=./boost/ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DWITH_DEBUG=1 \

##编译代码
make  && make install

编译完成后 输入

echo $?

查看还有没有没有编译完成的,如果是0则编译成功了

MySQL 初始化

# 创建配置文件目录 & 数据目录
mkdir -p /mysql/8.0.34/data  #你可以改这里

# 创建用户 & 组
groupadd mysql
useradd -g mysql mysql

# 创建配置文件
vi /etc/my.cnf

# 把以下内容覆盖到 my.cnf
[mysqld]
user=mysql
innodb_file_per_table=1
server_id=100
basedir=/usr/local/mysql
datadir=/mysql/8.0.34/data  #你可以改这里
log-error=/mysql/8.0.34/data/error.log  #你可以改这里

# 初始化数据目录
/usr/local/mysql/bin/mysqld --initialize-insecure

安装 VSCode 插件

本地安装ssh,远程安装这两个插件,远程下载插件很慢,可以下载好插件的安装文件,导入虚拟机,然后在虚拟机中安装,点这里

连上虚拟机的ip,输入密码,打开源码文件

调试,配置 VSCode 插件

cd /root/code/mysql-8.0.34
mkdir .vscode
cd .vscode
vi launch.json

内容

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(gdb) 启动",
      "type": "cppdbg",
      "request": "launch",
      "program": "/usr/local/mysql/bin/mysqld",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${fileDirname}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "setupCommands": [
        {
          "description": "为 gdb 启用整齐打印",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        },
        {
          "description": "将反汇编风格设置为 Intel",
          "text": "-gdb-set disassembly-flavor intel",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

启动 gdb

CentOS 上登录连接 MySQL

/usr/local/mysql/bin/mysql  # 登录 MySQL

连接 MySQL 成功之后,在 MySQL 源码中打个断点,先打开 sql/sql_parse.cc 文件:

打上断点

先在 CentOS 上的 MySQL 终端上执行一条 SQL。

SELECT  user FROM mysql.user;

停在断点处

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是更加具体的步骤、路径和命令: 1. 安装 Visual Studio 2013 或更高版本,安装 CMake 工具,安装 Perl 环境,以及安装 Git 客户端。 2. 下载 MySQL 5.7 的源码,可以从官方网站或者 GitHub 上下载。 假设你将 MySQL 5.7 的源码下载到了 `D:\mysql-5.7` 目录。 3. 打开命令行窗口,进入 MySQL 5.7 的源码根目录,例如: ``` cd D:\mysql-5.7 ``` 4. 创建一个用于编译和安装 MySQL 5.7 的目录,例如: ``` mkdir build cd build ``` 5. 运行 CMake 工具,指定 MySQL 5.7 的源码路径和编译选项,例如: ``` cmake .. -G "Visual Studio 15 2017" -DCMAKE_INSTALL_PREFIX=D:\mysql-5.7\install ``` 其,`-G` 选项指定使用 Visual Studio 2017 编译器,`-DCMAKE_INSTALL_PREFIX` 选项指定 MySQL 5.7 的安装目录为 `D:\mysql-5.7\install`。 6. 等待 CMake 工具配置完成后,运行 Visual Studio 2017,打开生成的 `MySQL.sln` 解决方案文件,编译 MySQL 5.7 的源码,例如: - 在 Visual Studio 2017 ,选择 `Release` 或 `Debug` 模式。 - 在 Visual Studio 2017 ,选择 `BUILD` -> `Build Solution` 编译整个工程。 7. 编译完成后,可以在 MySQL 5.7 的源码根目录下找到编译好的 MySQL 5.7 安装包,例如: ``` D:\mysql-5.7\bin ``` 8. 调试 MySQL 5.7 的源码,可以通过在 Visual Studio 2017 设置断点,然后运行 MySQL 5.7 的测试用例来进行调试。 需要注意的是,编译和调试 MySQL 5.7 的源码需要一定的时间和耐心,如果遇到问题,可以参考 MySQL 5.7 的官方文档或者社区论坛来解决。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值