windows系统mysql调试之路

1 篇文章 0 订阅

准备

源码

编译 MySQL 的源码非常简单,但是中间也有几个坑,如果能绕过这几个坑,在本地调试 MySQL 是一件很容易的事(当然能调试源码是一回事,能看懂源码又是另一回事了)。

我的环境是 Windows 10 x64,系统上安装了 Visual Studio 2012,如果你的开发环境和我不一样,编译步骤可能也会不同。

在开始之前,首先要从官网下载 MySQL 源码(下载地址):
在这里插入图片描述

cmake

CMake:CMake 本身并不是编译工具,它是通过编写一种平台无关的 CMakeList.txt 文件来定制编译流程的,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程;
安装时,选择添加环境变量;如果没有环境变量,可以手动添加bin目录到环境变量Path中;

Bison

Bison:MySQL 在执行 SQL 语句时,必然要对 SQL 语句进行解析,一般来说语法解析器会包含两个模块:词法分析和语法规则。词法分析和语法规则模块有两个较成熟的开源工具 Flex 和 Bison 分别用来解决这两个问题。MySQL 出于性能和灵活考虑,选择了自己完成词法解析部分,语法规则部分使用了 Bison,所以这里我们还要先安装 Bison。Bison 的默认安装路径为 C:\Program Files\GnuWin32,但是千万不要这样,一定要记得选择一个不带空格的目录,譬如 C:\GnuWin32 要不然在后面使用 Visual Studio 编译 MySQL 时会卡死;

需要手动添加bin目录的Path环境变量

Visual Studio

Visual Studio:没什么好说的,Windows 环境下估计没有比它更好的开发工具了吧。

openssl

openssl该网站提供了一个编译完成的OpenSSL安装包,建议下载下载1.1.0版本的installer,light后缀代表的是安装器中没有包含头文件和lib链接文件,这一点需要注意.
需要手动添加如下配置环境变量如下:

  1. 配置环境变量OPENSSL_ROOT_DIR D:\workspace\OpenSSL-Win32-1.0.1
  2. 配置环境变量 OPENSSL_INCLUDE_DIR D:\workspace\OpenSSL-Win32-1.0.1\include
  3. 配置环境变量OPENSSL_CRYPTO_LIBRARY D:\workspace\OpenSSL-Win32-1.0.1\lib

生成visual studio工程

D:\mysql-8.0.26> mkdir project
D:\mysql-8.0.26> cd project
D:\mysql-8.0.26> cmake -DDOWNLOAD_BOOST=1 -DWITH_BOOST="C:/boost" -G "Visual Studio 16 2019" ..

# 如果boost已经下载完成,可以使用以下命令
D:\mysql-8.0.26> cmake -DWITH_BOOST="C:/boost" -G "Visual Studio 16 2019" ..

cmake 的 -G 参数用于指定生成哪种类型的工程文件,这里是 Visual Studio 2019,可以直接输入 cmake -G 查看支持的工程类型。如果没问题,会在 project 目录下生成一堆文件,其中 MySQL.sln 就是我们要用的工程文件,使用 Visual Studio 打开它。

编译

打开 MySQL.sln 文件,会在 Solution Explorer 看到 758 个项目,其中有一个叫 ALL_BUILD,这个时候如果直接编译,编译会失败,在这之前,我们还要对代码做点修改:

  • 打开 sql\mysqld.cc 文件的第 6570 行,将assert(0) 改成assert(1),要不然调试时会触发断言
  • 如果有文件编译报错,需要将其编码方式更换为Unicode(UTF-8 带签名)

现在我们可以编译整个工程了,选中 ALL_BUILD 项目,Build,然后静静的等待 5 到 10 分钟,如果出现了 Build: 130 succeeded, 0 failed 这样的提示,那么恭喜,你现在可以尽情的调试 MySQL 了。

运行

启动mysqld项目,启动参数为–initialize-insecure --console,关闭,再次使用 --console启动

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows平台下,使用IntelliJ IDEA编译并调试MySQL源码可以按照以下步骤进行: 1. 安装CMake工具 MySQL源码需要使用CMake工具生成Makefile文件,然后再使用Make命令来编译。在Windows平台下,可以从CMake官网下载CMake安装包进行安装。 2. 下载MySQL源码 可以从MySQL官网下载MySQL源码压缩包。 3. 生成Makefile文件 在MySQL源码目录下,使用CMake工具生成Makefile文件。可以在终端(CMD或PowerShell)中执行以下命令: ``` cmake -G "Visual Studio 16 2019" -A x64 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_UNIT_TESTS=OFF -DWITH_EMBEDDED_SERVER=OFF . ``` 其中,-G参数指定生成的Makefile文件类型,这里使用的是Visual Studio 2019的Makefile文件。-A参数指定构建的目标平台是x64。-DDOWNLOAD_BOOST=1表示需要下载并编译Boost库,-DWITH_BOOST=./boost指定Boost库的路径。-DWITH_SSL=system和-DWITH_ZLIB=system表示使用系统安装的OpenSSL和Zlib库。-DWITH_UNIT_TESTS=OFF表示不编译单元测试代码。-DWITH_EMBEDDED_SERVER=OFF表示不编译嵌入式服务器代码。 执行完命令后,会在MySQL源码目录下生成相应的Makefile文件。 4. 使用Visual Studio编译MySQL源码 使用Visual Studio打开MySQL源码目录下的`mysql.sln`文件,然后编译整个解决方案。编译完成后,会在MySQL源码目录下生成相应的二进制文件。 5. 使用IntelliJ IDEA进行调试 打开IntelliJ IDEA,创建一个新的C++项目,然后将MySQL源码目录下的`sql`目录导入到项目中。在IntelliJ IDEA中配置调试器,并设置断点进行调试。 需要注意的是,由于MySQL是一个大型的项目,编译和调试可能需要较长的时间和较高的机器配置。同时,还需要对MySQL的代码结构和逻辑有一定的了解。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值