MySQLソースコード解析ことはじめ
環境
FreeBSD-6.2
準備
MySQLソースコードの取得
$ fetch "http://mirror.mysql-partners-jp.biz/Downloads/MySQL-5.0/mysql-5.0.45.tar.gz";
$ tar xzf fetch.out;
デバッグ
GUIデバッガdddインストール
- ddd
$ sudo pkg_add -r ddd;
-
- 依存性高いので色々コッテリ入っていきます。
- Xクライアントアプリなので、環境変数DISPLAYの設定やXサーバーの用意は別途必要です。
出来上がったバイナリをdddに食わせる
$ ddd sql/mysqld
dddの使い方
起動後、とりあえずまずはmain関数にbreakpointを貼りましょう。その後、Run。でステップ実行とか変数をダブルクリックしてグラフィカル表示などしているうちに感覚がつかめると思います。
- Step
カレント行を実行する。カレント行が関数であれば関数の中に入ります。
- Next
カレント行を実行する。カレント行が関数であれば関数の中に入らずに関数全体を実行します。
- Stepi
マシン語レベルでのstep
- Nexti
マシン語レベルでのnext
- Until
for文を抜けます
- Finish
現在の関数を実行して呼び出し元に戻ります
- Cont
コンティニュー。次のブレークポイントまで一気にすすみます。
- Kill
プロセスをkillします
- Up
自分を呼んだ関数を表示します。表示するだけで、カレント行は変わりません。
- Down
Upと逆の動作
- Undo
Undo Nextします
Redo Next。Undoを実行しないと有効になりません。
- Edit
ファイルを編集します。
- Make
makeを実行します。