そろばんのしょ(第3版第2刷)

雑魚い見習いDBAの日々学んだことや、どーでもいいことを。基本は自分の備忘録。

CLion on macOSでMySQLをデバッグする

最近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分くらい

初期化

$ ./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

f:id:hidemifukamachi:20200525232450p:plain

右上の実行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オプションとかを変えて凌ぐしかなさそう…