环境准备
在开始源码编译与调试前,需确保系统环境满足以下条件:
操作系统:推荐 Linux 发行版(如 Ubuntu 20.04/CentOS 7+)。
依赖安装:
# Ubuntu/Debian sudo apt update sudo apt install -y build-essential cmake libncurses-dev libssl-dev libboost-all-dev bison git gdb # CentOS/RHEL sudo yum groupinstall -y "Development Tools" sudo yum install -y cmake ncurses-devel openssl-devel bison git gdb
磁盘空间:至少预留 20GB 可用空间。
网络环境:需从 GitHub 或 MySQL 官方下载源码。
步骤 1:下载 MySQL 源码
推荐从 MySQL 官方 GitHub 仓库获取稳定版本:
git clone https://github.com/mysql/mysql-server.git cd mysql-server git checkout mysql-8.0.30 # 以 8.0.30 版本为例
步骤 2:编译 MySQL 源码
通过 cmake
生成构建配置,需启用调试模式以支持 GDB 调试:
mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Debug # 关键:生成调试符号 -DWITH_BOOST=../boost # 指定 Boost 库路径(源码自带) -DMYSQL_DATADIR=/var/lib/mysql # 数据目录 -DSYSCONFDIR=/etc/mysql # 配置文件目录 -DWITH_SSL=system # 使用系统 SSL 库 -DWITH_INNOBASE_STORAGE_ENGINE=1 # 启用 InnoDB make -j$(nproc) # 多线程编译加速
常见问题
libtinfo5
)。 WITH_BOOST
路径错误,需检查源码目录下的 boost
子目录是否存在。步骤 3:安装 MySQL
编译完成后,执行安装命令:
sudo make install
安装路径默认为 /usr/local/mysql
,可通过 -DCMAKE_INSTALL_PREFIX
自定义。
步骤 4:配置 MySQL 调试环境
初始化数据库:
cd /usr/local/mysql sudo bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql
记录输出的临时 root 密码(用于首次登录)。
启动 MySQL 并附加 GDB:
sudo gdb bin/mysqld (gdb) set args --defaults-file=/etc/mysql/my.cnf --user=mysql (gdb) break main # 在 main 函数设置断点 (gdb) run # 启动 MySQL 服务
步骤 5:验证调试功能
mysql -uroot -p
backtrace
查看堆栈信息,或使用 next
/step
逐行调试。注意事项
CMAKE_BUILD_TYPE=Debug
,将无法查看源码级信息。 引用说明
本文参考 MySQL 8.0 官方文档(dev.mysql.com/doc)及 GDB 调试手册(sourceware.org/gdb)。