使用 CLion 调试 mysql 源码

在使用 mysql 的过程中,遇到了一些问题,虽然根据网络上的资料,多少解决了问题,但有时候,并没有给出合理的解释。从那时候开始,自己就越来越想更深入了解 mysql 的底层原理。最开始,不太懂得使用一些工具来调试跟踪,只能通过网上的资料,查找对应的源码,边看边理解,这样不仅效率低下、而且容易让人枯燥无法坚持。后来学会 gdb 工具的使用,于是开始在命令行下,使用 gdb 调试跟踪 mysql 源码。其中,在 gdb -tui 模式下,可以更好的显示 mysqld 所执行的每一步对应的源码文件及其所在的行数,这样跟踪学习 mysql 源码的效率就高多了。不过,因为是在命令行下跟踪,所以,不断切换 IDE 源码和终端,也是比较低效的(而且,gdb 在 macOS 下,attach 进程后经常卡死)。所以,这里主要记录一下另外一种更高效的方法,即:使用 CLion 调试 mysqld 源码。

环境说明

  • 系统:macOS 10.13.4 (17E202)

    • 应用软件:CLion-2017.3.1、mysql-5.5.59.tar.gz
之所以选择 mysql-5.5.59 版本源码,是因为代码量会少一些,刚开始学习调试跟踪难度会小一点(当然,不同版本的 MySQL 源码差异也比较大)。

编译安装 MySQL 调试版本

下载并编译安装 MySQL 调试版:

cd /usr/local/src/mysql/source_code
wget https://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.59.tar.gz
tar -zxvf mysql-5.5.59.tar.gz
mv mysql-5.5.59 mysql55
mkdir mysql55/bld && cd mysql55/bld

cmake .. -DWITH_DEBUG=1 \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql55 \
-DMYSQL_DATADIR=/usr/local/mysql55/data

make && sudo make install

并初始化 mysql 数据库,但不启动 mysqld 服务

cd /usr/local/mysql55
scripts/mysql_install_db

配置 CLion IDE

使用 CLion IDE 打开 mysql55 目录,并创建 CMake Profile 配置:

use_clion_to_debug_mysql_source_code_20180506014138.png

完成后,CMake 会构建自动生成 cmake-build-debug-mysql55 目录:

use_clion_to_debug_mysql_source_code_20180506014606.png

待 CMake 构建完成后,之后选择调试 mysqld:

use_clion_to_debug_mysql_source_code_20180506015616.png

use_clion_to_debug_mysql_source_code_20180506015753.png

本例将演示调试跟踪 MySQL 处理 SQL 语句的流程,如下:

use_clion_to_debug_mysql_source_code_20180506020502.png

use_clion_to_debug_mysql_souce_code_20180506020626.png

use_clion_to_debug_mysql_source_code_20180506021143.png

至此,使用 CLion 调试 mysql 源码结束。

参考资料

添加评论

验证码: