最近MySQLのdebug buildをMacでする機会が多くなったのでメモがてら残しておく。 $HOME配下にmysqlディレクトリを作ってmysql_sourceにコードを、mysql_dataにdatadirとかバイナリを置く構成にする。 最初brewとかつかってなにかいれた記憶があるけど、忘れてしまった。。。
とりあえずビルドするまで
$ wgetとかでboost付きのソースコードを取得
$ tar xvf mysql-boost-8.0.20.tar.gz
-- ビルド作業はworkで行う。
$ mkdir work
$ cd work
$ cmake \
-DCMAKE_INSTALL_PREFIX=${HOME}/mysql/mysql_data/mysql-8.0.20 \
-DMYSQL_DATADIR=${HOME}/mysql/mysql_data/mysql-8.0.20/data \
-DSYSCONFDIR=${HOME}/mysql/mysql_data/mysql-8.0.20 \
-DMYSQL_UNIX_ADDR=${HOME}/mysql/mysql_data/mysql-8.0.20/data/mysql.sock \
-DWITH_DEBUG=1 \
-DWITH_BOOST=${HOME}/mysql/mysql_source/mysql-8.0.20/boost ../mysql_source/mysql-8.0.20
$ time make -j 4
$ time make install -j4
自分の環境だとだいたい30分くらい
わーい
— lhfukamachi (@lhfukamachi) 2020年4月18日
```
$ time make -j 4
real24m0.747s
user83m16.501s
sys7m34.630s
```
初期化
$ ./mysqld --basedir=${HOME}/mysql/mysql_data/mysql-8.0.20 --datadir=${HOME}/mysql/mysql_data/mysql-8.0.20/data --initialize-insecure --user=${USER}
CLionの設定からデバッグまで
CLionを起動してソースコードを開く。 このあと Preference > CMakeでCMake optionとかの設定
-DCMAKE_INSTALL_PREFIX=${HOME}/mysql/mysql_data/mysql-8.0.20
-DMYSQL_DATADIR=${HOME}/mysql/mysql_data/mysql-8.0.20/data
-DSYSCONFDIR=${HOME}/mysql/mysql_data/mysql-8.0.20
-DMYSQL_UNIX_ADDR=${HOME}/mysql/mysql_data/mysql-8.0.20/data/mysql.sock
-DWITH_DEBUG=1
-DWITH_BOOST=${HOME}/mysql/mysql_source/mysql-8.0.20/boost

右上の実行Debug Configureからmysqldを選択し 実行の引数の設定をする。
--basedir=${HOME}/mysql/mysql_data/mysql-8.0.20 --datadir=${HOME}/mysql/mysql_data/mysql-8.0.20/data
このときにBefore launchからビルドを外して、都度ビルドしないようにしておく。 あとはデバッグでmysqldを起動し、do_commandとかにブレークポイントをおいて止まってくれるか確認する。
注意:2020年5月現在、macbook air 2020ではCLionがクラッシュする。
https://youtrack.jetbrains.com/issue/JBR-2310
VMオプションとかを変えて凌ぐしかなさそう…