先日、Windows 10 上であっさりと mysql.exe が落ちる事象について書きました。
sakaik.hateblo.jp
早速、yoku0825 さんがバグ報告を上げてくださったので、対応されるのが楽しみです。
bugs.mysql.com
あとは本家の対応待ちでも良いのですが、あまりにも落ち方が潔かったので、ちょっと覗いてみたくなったので、やってみました。この日記は、Windows 10 上での mysql command line client (mysql CLC)のデバッグ環境のつくりかたのメモです。私のPCには一応、Visual Studio Community 2019 が入っているので、それを使います。MySQLサーバは動作済みであるものとします(今回ビルドするクライアントで、既に動作中のサーバに接続する、ということをやります)
Visual Studio 用のファイル群の作成(cmake)
cmakeを使って、Windows用でビルドするための ソリューションファイルとかを生成させます。ソース内の client フォルダに移動してから実行します。私の環境では cmake にパスを通していなかったので、長々とフルパス指定で実行しました。 BOOST ライブラリをダウンロードする指定をせよ、とエラーになったので、指定しています。また、-G で指定する開発環境は、VS2018 までは 64ビット版用に Win64 という文字を付加していたのですが、2019ではなくなった、または、別オプションで指定することになったようです(古いブログを真似して Win64 を付けたりするとエラーになります)。
D:\work\mysql-8.0.22\client>"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake" .. -DDOWNLOAD_BOOST=1 -DWITH_BOOST=. -G "Visual Studio 16 2019"
これで sln ファイルが生成されました
Visual Studio の起動とプロジェクトの読み込みとビルド
ファイル-開く-プロジェクト・ソリューション で、client フォルダ内の MySQL.sln を指定してひらきます。
次に、右ペインにある「ソリューションエクスプローラー」で mysql を選択して、右クリック、ビルド。日本語環境では、文字コードに関するワーニングが出ますが、今回追いかけたい部分には影響ないと判断し、とりあえず無視しておくことにします(ちゃんとやりたい場合は、せじまさんのブログを参考に、各ソースファイルに BOM を付けたら良いと思います)。
今回の設定の場合、ビルド後の実行ファイルは、client\runtime_output_directory\ に作成されます。(が、GUI上でデバッグするので、このファイルの所在を知らなくても今回は特に問題ありません)
そういや、この時点ですでに mysql.ccのソースファイルを開いていますね、私。ソリューションエクスプローラーから、mysql - Source Files の中にあります。
mysql CLC の起動前の準備
Visual Studio 上で mysql.exe をデバッグ実行したいのですが、接続用パラメタを与えないと起動してすぐに終了してしまいますよね。以下の方法で、起動パラメタを指定します。
プロジェクト-mysqlのプロパティを開く
デバッグ-コマンド引数のところに、-u -p などのパラメタを指定する