参考了几篇文章,还是这篇较靠谱, mac 上调试 MySQL 源码
简单记录下步骤
- AppStore上搜索下载并安装 xcode,官网下载安装 cmake, 安装 gdb (可直接 homebrew 安装)
- 下载源码,我下载的是 percona-server-5.7.22
- 配置阶段
- cd percona-server-5.7.22-22
- mkdir work
- cmake mysql 5.7 需要排除掉 rocksdb,-DWITH_ROCKSDB_STORAGE_ENGINE=OFF -DWITHOUT_ROCKSDB_STORAGE_ENGINE=ON , 否则有头文件依赖,通不过编译
- 依赖 boost,需要加上 boost 下载安装参数,-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/your_path/percona-server-5.7.22-22/boost
- cmake . -G “Xcode” -DWITH_DEBUG=1 -DWITH_TOKUDB_STORAGE_ENGINE=OFF -DWITHOUT_TOKUDB_STORAGE_ENGINE=ON -DWITH_ROCKSDB_STORAGE_ENGINE=OFF -DWITHOUT_ROCKSDB_STORAGE_ENGINE=ON -DCMAKE_INSTALL_PREFIX=/your_path/percona-server-5.7.22-22/work -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/your_path/percona-server-5.7.22-22/boost
- 生成 MySQL.xcodeproj 后用 xcode 打开,然后进行 ALL_BUILD, 相当于 make , make install 过程
- 接下来 copy 文件到 work 目录
- cd work ; mkdir {bin,share,scripts,data}
- cp sql/Debug/mysqld work/bin/
- cp client/Debug/mysql* work/bin/
- cp extra/Debug/my_print_defaults work/bin/
- cp -r sql/share/* work/share/
- cp -r scripts/* work/scripts/
- chmod +x work/scripts/*
- cp scripts/*.sql work/share/
- cp support-files/*.cnf work/share/
- 初始化数据库
- mysqld --initialize-insecure --user=系统用户名
- 返回 xcode 选择 active schema 为 mysqld , 并且 project->schema->edit schema , 添加 Arguments(启动时参数)
- –user=系统用户名
- –datadir=/Users/ruiaylin/Documents/MySQL/percona-server-5.6.24/work/data
- my.cnf 不需要管,有需要再创建和指定,创建 /tmp/mysql.sock ,xcode 中启动 mysqld
- 命令行 mysql -hlocalhost -uroot 连接上,xcode 中代码断点可以打在 sql_parser.cc > do_command 方法上