【MySQL源码】使用CLion 远程调试MySQL源码

本文指导DBA如何通过CLion阅读和调试MySQL源码,包括下载源码,配置IDE连接远程服务器,升级gdb和CMake版本,以及在CLion中设置编译选项和初始化MySQL的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

0 准备工作

1 IDE 

2 下载MySQL源码

​编辑

一 配置CLion

1 添加远程服务器

2 配置远程服务器环境

3 升级gdb版本

4 升级CMake版本

5 修改远程服务器文件上传的目录的对应关系 

5 配置cmake

7 初始化MySQL 

8 启动MySQL


作为DBA工作多年,如果还是停留在运维阶段,很难提高自己的技术水平。阅读 MySQL 及相关工具的源代码,不仅是数据库研发人员的日常,也是 DBA 进阶的必经之路,全方位提高技术水平。

0 准备工作

1 IDE 

IDE CLion下载 CLion:JetBrains 出品的 C 和 C++ 跨平台 IDE

使用IDE的目的主要是方便阅读/debug MySQL源码 

2 下载MySQL源码

下载地址

MySQL :: MySQL Community Downloads

 下载页面有两种源码包 选择下载包含boost的源码包

一 配置CLion

1 添加远程服务器

打开IDE CLion  --> Open  本地打开MySQL的源码 

点击 Preferences --> Tools

点击 + 添加源端的服务器 填写 host 端口 用户名 密码等信息 --> 点击 Test Connection --> 出现连接成功即可 

2 配置远程服务器环境

从上图可以看到 cmake  和 gdb 的版本较低,不满足要求。下面需要升级gdb和cmake的版本。如果你的版本都满足要求 可以跳过第3,4步。

3 升级gdb版本

参考博客  Linux之gdb安装和升级_gdb 升级-优快云博客

查看目前版本

# 查看当前版本
gdb -v
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60.el6_4.1)

# 下载压缩包
wget http://ftp.gnu.org/gnu/gdb/gdb-7.8.tar.gz

# 解压 
tar -zxvf gdb-7.8.tar.gz
chown  -R root.root gdb-7.8
# 编译安装
cd  gdb-7.8
mkdir build
./configure
make
make install 

# 二进制命令在 /usr/local/bin/ 下
/usr/local/bin/gdb --version

在 C 语言项目中,预编译时的安装路径通常是由 configure 脚本或 CMake 构建系统生成的。这个路径通常取决于多个因素,包括系统默认路径、用户指定的参数,以及软件包的配置选项。在没有指定 PREFIX 参数的情况下,通常会使用默认路径。

以下是一些方法,你可以查看在没有指定 PREFIX 参数时,预编译时二进制文件会安装到哪里:

1. 查看 Makefile

在 C 语言项目的源代码目录中,可以查看 Makefile 或者 Makefile.in 文件,这些文件中包含了关于预编译时安装路径的信息。查找类似于 prefixDESTDIR 的关键字,这些关键字通常用于指定安装路径。

4 升级CMake版本

 wget https://cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz --no-check-certificate

 tar -zxvf cmake-2.8.12.2.tar.gz

cd cmake-2.8.12.2

./bootstrap

gmake

 gmake install

5 修改远程服务器文件上传的目录的对应关系 

默认路径在tmp 随机字符串生成一个目录

修改为自己想放的位置 /home/software/mysql_source_code

  

5 配置cmake

BuilD type :debug

tooolchain :Remote host

Cmake option: . -DWITH_DEBUG=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost -DCMAKE_INSTALL_PREFIX=build_out -DMYSQL_DATADIR=build_out/data

Built directory : .

参数解释: 

  1. -DWITH_DEBUG=1: 启用调试模式。这将编译MySQL服务器和相关的组件,以便在调试时能够获取更多的信息和日志。

  2. -DDOWNLOAD_BOOST=1: 下载并构建Boost库。Boost是一个提供许多用于C++的工具和库的开源项目。这个选项告诉CMake下载Boost库并将其集成到MySQL的构建中。

  3. -DWITH_BOOST=./boost: 指定Boost库的位置。这告诉CMake在当前目录下寻找名为"boost"的目录,并将其用作Boost库的位置。

  4. -DCMAKE_INSTALL_PREFIX=build_out: 指定安装目录的前缀。在构建和安装完成后,MySQL将被安装到"build_out"目录下。

  5. -DMYSQL_DATADIR=build_out/data: 指定MySQL数据目录的位置。MySQL数据目录是存储数据库文件的地方。在这里,它被设置为"build_out/data"。

修改完成之后开始上传  上传需要一些时间 可以在 filetransfer 看到文件上传的详情

报错 1

-- Packaging as: mysql-5.7.28-Linux-x86_64
-- WITH_BOOST=/home/software/mysql_source_code/boost/boost_1_59_0/boost
-- BOOST_INCLUDE_DIR 
-- LOCAL_BOOST_DIR LOCAL_BOOST_DIR-NOTFOUND
-- LOCAL_BOOST_ZIP LOCAL_BOOST_ZIP-NOTFOUND
-- Could not find (the correct version of) boost.
-- MySQL currently requires boost_1_59_0

解决 :

这个调整Cmake的配置解决 

报错2 

-- Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH) 
CMake Error at cmake/readline.cmake:71 (MESSAGE):
  Curses library not found.  Please install appropriate package,

 解决:

yum install ncurses-devel

7 初始化MySQL 

--defaults-file=/etc/my_5306.cnf --initialize --initialize-insecure --user=mysql

参数解释 

--defaults-file=/etc/my_5306.cnf  配置文件

--initialize 初始化

--initialize-insecure 不设置初始的密码

--user=mysql 使用用户

将以上命令填写到 

点击 edit  Configure 

左侧选择 mysqld ,将以上命令填写到 Program arguments 

初始化 数据目录生成在配置文件配置的目录下 

要注意目录是否存在 ,目录的用户等问题

点击run mysqld 进行初始化。相当于安装MySQL时进行初始化,只不过是在本地Clion 上进行了。

8 启动MySQL

--defaults-file=/etc/my_5306.cnf --debug=d,error,warning,info:F:L

启动时加的debug 参数 的含义

官方文档大概讲解

MySQL :: MySQL 8.0 Reference Manual :: 5.1.7 Server Command Options

官方文档详细讲解:

MySQL :: MySQL 8.0 Reference Manual :: 5.9.4 The DBUG Package

在cmake的时候需要加参数 -DWITH_DEBUG=1 ,然后启动MySQL实例的时候加参数--debug才有效

F 显示 每行调试或跟踪输出相关的源码文件名。

L 显示每行debug或trace输出相关的 源码文件的行数

i.显示每行debug或trace输出 相关的进程ID 或 线程ID

### 如何在 MacOS 上使用 CLion 开发 MySQL 源码 #### 准备工作 为了能够在 Mac OS 上利用 CLion 编译并调试 MySQL 源码,需先准备好相应的开发环境。操作系统版本应不低于 macOS 10.13.4 (17E202),并且安装有适合的 IDE —— CLion-2017.3.1 或更新版本[^2]。 #### 获取 MySQL 源码 对于希望减少初期学习曲线的情况,可以选择较旧版本如 `mysql-5.5.59` 来作为入门起点;而对于追求最新特性和功能支持,则可以从 GitHub 克隆最新的官方仓库来获得更现代的分支,比如 MySQL 8.x 版本[^3]。 #### 配置 CMake 构建工具链 进入下载好的 MySQL 源码目录后,通过命令行执行 cmake 命令来进行项目的初始化配置。考虑到权限问题,在某些情况下可能需要用 sudo 提升权限以顺利完成此过程[^5]: ```bash cd /path/to/your/mysql-source-code-directory sudo cmake . ``` #### 创建项目文件以便导入到 CLion 中 一旦成功完成了上述步骤中的构建准备阶段之后,接下来就是创建一个可以被 CLion 所识别的工作空间。这通常意味着要生成 `.idea` 文件夹以及一系列辅助性的设置文档,这些都可以借助于 CMake 的 `-G "CodeBlocks - Unix Makefiles"` 参数或者其他兼容的方式实现自动化处理。 #### 导入工程至 CLion 并调整编译选项 打开 CLion 后选择“Import Project”,找到之前已经过预处理后的 MySQL 源代码根路径加载进来。此时应该能看到整个项目结构已经被正确解析出来,并且可以根据个人需求进一步定制化编译参数,例如指定目标架构、优化级别等特性开关。 #### 设置断点与启动调试器 当一切就绪以后,便可以在感兴趣的函数内部设定多个断点位置,随后点击绿色三角形按钮或者菜单栏里的 “Run -> Debug” 功能项触发程序运行状态下的暂停机制,从而允许开发者逐条语句分析逻辑走向及其变量变化情况。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DBA之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值