LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

VSCode编译和调试MySQL源码详细教程

freeflydom
2025年3月6日 9:50 本文热度 534

1 前言

在运维MySQL的过程中,我们常会遇到无法用现有知识解释的问题。阅读源码不仅能帮助我们理解数据库底层逻辑,还能将零散的知识串联成体系。本文以VSCode远程调试MySQL 5.7源码为例,分享完整的环境搭建流程。若文中存在疏漏,欢迎指正交流。

2 环境准备

以下为本次实验的关键环境配置:

名称详情
数据库服务器安装MySQL源码,服务器系统版本信息Centos7(内核: 3.10.0-1160.el7.x86_64)
客户端安装VSCode软件,window10
服务器GCC版本10.2.1
服务器CMake版本3.17.5
客户端VSCode版本1.96.2
服务器上MySQL源码mysql-boost-5.7.44

3 详细步骤

3.1 服务器基础环境配置

yum -y install net-tools wget vim jemalloc-devel jemalloc libudev-devel ncurses-devel openldap openldap-devel cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi bison

3.2 服务器安装GCC

注意:CentOS 7默认GCC版本为4.8,需升级至10.x以支持C++17特性。

# 配置阿里yum源,追加以下内容
vi /etc/yum.repos.d/CentOS-Base.repo
[sclo-rh]
name=CentOS-$releasever - SCLo RH
baseurl=http://mirrors.aliyun.com/centos/$releasever/sclo/$basearch/rh/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS7

# 更新源
yum install epel-release
yum install centos-release-scl
yum install -y centos-release-scl
yum clean all
yum makecache
scl enable devtoolset-10 bash

# 安装配置GCC
mv /usr/bin/gcc mv /usr/bin/gcc.bak
mv /usr/bin/g++ mv /usr/bin/g++.bak
update-alternatives --install /usr/bin/gcc gcc /opt/rh/devtoolset-10/root/usr/bin/gcc 60
update-alternatives --install /usr/bin/g++ g++ /opt/rh/devtoolset-10/root/usr/bin/g++ 60
update-alternatives --config gcc
update-alternatives --config g++

# 查看版本
gcc --version # 版本为10.2.1
g++ --version # 版本为10.2.1

3.3 安装CMake 3.17

说明:MySQL 5.7需CMake 3.5+,此处选择较新的3.17版本。

cd /etc/pki/rpm-gpg
wget https://archive.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7
yum install cmake3
ln -s /usr/bin/cmake3 /usr/bin/cmake # 创建软链接
cmake -version 
cmake3 version 3.17.5 # 返回信息代表CMake版本安装成功

3.4 服务器下载MySQL5.7软件包

下载与解压:

cd /home
wget -c 'https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.44.tar.gz'
tar -zxvf mysql-boost-5.7.44.tar.gz

配置MySQL参数(/etc/my.cnf

# 配置默认的my.cnf文件,主要是设置常用参数,方便后续使用VSCode调试源码,启动mysqld服务的时候尽量不报错
vi /etc/my.cnf
[mysqld]
lc-messages-dir=/home/mysql-5.7.44/build/sql/share # 根据实际情况修改
socket=/tmp/mysql.sock
skip-grant-tables # 方便调试
character_set_server=utf8
lower_case_table_names=1
[client]
socket=/tmp/mysql.sock

3.5 客户端VSCode配置

VSCode是一款跨平台源代码编辑器,我们编译调试MySQL5.7源码使用该IDE工具。首先打开VSCode,找到拓展,安装Remote SSH。安装成功后,使用该拓展连接远程LINUX服务器,快捷键Ctrl + Shift + p,首先我们需要安装以下插件:

  • Remote - SSH (v0.66.1):远程连接服务器
  • C/C++ (v1.7.1)
  • CMake (v0.0.17)
  • CMake Tools (v1.9.2)
  • Code Spell Checker (v2.0.13)
  • Doxygen Documentation Generator (v1.3.2)

连接远程Linux服务器:快捷键Ctrl + Shift + p(Windows)、Shift + Command + p(Mac),按照提示连接服务器后,点击“open folder”,选择自己的MySQL源码目录。 

3.6 编译前项目设置

  1. CMake选择 [Debug],对应上图中红色标注1
  2. GCC编译器选择我们之前安装的 [GCC10.2.1],对应上图中红色标注2
  3. 选择需要编译的程序,选择 [all] ,意为编译MySQL工程下的所有程序,对应上图中红色标注3
  4. 选择我们要调试的程序为 [mysqld],表示要运行MySQL Server程序,当遇到调试程序无法选择的情况,通过快捷键Ctrl + Shift + p,然后输入: CMake: Set Launch/Debug Target 进行修改,对应上图中红色标注4 

3.7 编译前参数设置

在VSCode中依次添加: File → Preferences → Settings → 'cmake:Configure' → 【Cmake:Configure Args】 → Add Item

-DWITH_BOOST=./boost

-DDOWNLOAD_BOOST=1

-DWITH_JEMALLOC=1

(最好将下图Remote、Workspace页签全部都配置,防止出现问题

在VSCode依次添加: File → Preferences → Settings → 'cmake:Cache'→【Cmake:Cache Init】→ Edit in settings.json

"cmake.debugConfig": {"args:": ["--user=root"],}

(最好将下图Remote、Workspace页签全部都配置,防止出现问题

编译前准备工作就绪,点击最下面**【⚙ Build】**就可以开始编译了,如果最后输出“[build] Build finishded with exit code 0”则代表编译成功。 

3.8 初始化数据库

编译好源码,只是代表我们生成必要的服务,需要通过mysqld服务初始化数据库目录。

在数据库目录
/home/mysql-5.7.44/build/sql/mysqld --initialize --user=root # 初始化数据目录
/home/mysql-5.7.44/build/sql/mysqld --user=root # 测试服务是否可以正常启动,如果测试不成功,可以通过error日志进行分析,排查问题

3.9 开始调试

设置断点(鼠标左键在行号前单击一下即可),按最下面的小虫子图标就可以调试程序了。  

使用源码进行调试的时候,mysqld服务会将核心的日志输出。

使用mysql命令进入服务,执行下面的命令
set debug = 'd:t:o,/tmp/mysqld.trace';
select @@debug; 
然后手动查看/tmp/mysqld.trace即可

4 其他

本文从环境配置到调试实战,完整演示了MySQL源码的远程调试方法。通过源码级调试,开发者可以深入理解InnoDB事务、SQL解析等核心机制,在学习调试的过程中逐步构建完整的数据库知识体系。本次环境搭建只是万里长城的第一步,后续可尝试在事务、查询优化等复杂场景中设置断点,观察内部状态变化,进一步提升问题排查能力。

​转自https://juejin.cn/post/7476651892144947211


该文章在 2025/3/6 9:50:02 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved