2010-10-31
■[xcode][mysql]XcodeでMySQLのデバッグ環境を構築する

仕事ではよく使うけど、内部の動作を見てみようとは思いもしませんでしたが、最近、HandlerSocketやMychachedなどが話題になっていたこともあり、興味がわいたので、まずはデバッグ環境の構築でも。。と、googleを検索してみてもそれらしいことが書かれたサイトが見つからなかったので、書き残してみることにしました。
もっとも、こんなところで苦戦してるのは私だけでしょうけど。(CUIなデバッガーは好きじゃないんですよね*1)
環境
基本はこちら*2に書かれている内容と一緒。
configureオプションは、配布されているMacOSXのバイナリに含まれるbin/mysqlbugに記述されているconfigureオプションを参考にするとよいでしょう。
ビルドは意外にあっさり終了しますが、最大の難所は実際にデバッグ実行するところ。
sql/mysqldを実行可能ファイルとして指定しても動作しません。
MySQLは、きまった構成のデプロイでないと動作しないようなので、デバッグ用にデプロイします。
make installすれば、configureのprefixで指定した位置にデプロイされますが(要するにインストールされてしまう)いささかいただけません。
scripts/make_binary_distributionでパッケージ化し*3、それを任意の位置に解凍することでデバッグ用のデプロイとします。
デバッグ用にデプロイしたら、実行可能ファイルに新規カスタム実行ファイル(bin/mysqld)を追加します。(これを仮にmysqldとします)
追加したら、追加したmysqldの情報ウィンドウ(コンテキストメニューの情報を見るを選択すると表示されるウィンドウ)の引数タブの起動時に渡される引数にmysqldの--basedir, --datadir, --user, --socket, --pid-fileの辺りのオプションを指定します。
また、デバッグタブのデバッガの起動後に実行可能ファイルを起動するのチェックを外し、ソースファイルを検索する追加のディレクトリにソースファイルがあるディレクトリを指定します。
後、プロジェクトにソースファイルを読み込んでおくのをお忘れなく。
これでデバッグ環境の構築は終了です。
実際にデバッグ実行してみます。
さきほど追加した、実行可能ファイルをデバッグ実行します。
mysqldのコンテキストメニューからmysqldを開始を選択します。
デバッガにERRORが表示されshutdownされるなら、何か設定が間違っているので設定を見直してください。(パッケージに含まれるログファイルだと起動しないことがあるので、作成しなおさなければいけないこともあります*4)
MySQLの起動メッセージが表示されているなら、デバッグ実行は成功です。
ブレークポイントを置き、クライアントからSQLを流しこめばブレークポイントで停止するはずです。
ブログを書くのは、2年強ぶり。
ほんと文章を書くのって疲れます。
気力が必要。
書く前はスクリーンショットを載せて〜とかいろいろ考えてましたけど、力尽きました。。
- 12 http://pipes.yahoo.com/pipes/pipe.info?_id=6ffca3d513899ee44c0d1201c766e92c
- 4 http://pipes.yahoo.com/pipes/pipe.info?_id=5c957097ed152660234169b605fb3fa7
- 3 http://pipes.yahoo.com/pipes/pipe.info?_id=vpw6npu13rgko15vbrnmsa
- 2 http://d.hatena.ne.jp/keyword/オプション
- 2 http://d.hatena.ne.jp/keyword/デフォルト
- 2 http://www.google.co.jp/search?client=safari&rls=en&q=XCode+デバッグ+終了時&ie=UTF-8&oe=UTF-8&redir_esc=&ei=IdjxTL36FY26ugPI1uHODQ
- 2 http://www.google.co.jp/search?hl=ja&lr=lang_ja&tbs=lr:lang_1ja&q=エラーメッセージを含んでいる省略可能なリ??%
- 1 http://airticketmuryou.seesaa.net/
- 1 http://ameblo.jp/swanhawk114/
- 1 http://b.hatena.ne.jp/entry/d.hatena.ne.jp/hoge1229/20101031#1288545170