投稿

5月, 2013の投稿を表示しています

PostgreSQL gdb debug

PostgreSQL も gdb で読むための作業です。 http://www.postgresql.org/docs/current/static/git.html から git で落としてきます。 yacc が使われているらしいので一応インストール。 brew install bison make いつもの configure 。 configure --enable-debug --prefix=$BUILD_DIR/POSTGRESQL_BUILD そのまま、 make make install 結構時間かかります。 データベースの設定 PGDATA は PostgreSQL のデータが入るディレクトリです。 データベースの初期化から。 $BUILD_DIR/POSTGRESQL_BUILD/bin/initdb -D $PGDATA で、PostgreSQL を起動。 $BUILD_DIR/POSTGRESQL_BUILD/pg_ctl -D $PGDATA -l logfile_name start データベースを作り、PostgreSQL に接続。プロンプトが出たらやったー。 $BUILD_DIR/POSTGRESQL_BUILD/createdb test_db $BUILD_DIR/POSTGRESQL_BUILD/psql test_db あらたにコンソールを立ち上げ、 ps -ef | grep postgres で、PostgreSQL のプロセスを探し出す 以下のが見つかれば 501 904 788 0 1:34PM ?? 0:00.01 postgres: USER user [local] idle プロセス番号を使って gdb $BUILD_DIR/BUILD_POSTGRESQL/bin/postgres (gdb) attach 904 で接続し、psql を実行したセッションで適当に SQL を打ってデバッグします。 (gdb) until で待つのが良いみたい。

MySQL gdb debug

イメージ
環境は Mac OS X です。 とりあえずダウンロード まず http://dev.mysql.com/downloads/mysql/ からソースをダウンロードしてきます。 で下記のドロップダウンリストから source code を選択してダウンロード。 .tar.gz 形式の Generic Linux でよいかと。 で、それのダウンロードが終わったら解凍します。 tar zxvf mysql-5.6.11.tar.gz 解凍後、 cd mysql-5.6.11 どこか適当なところに、bin や script が入るディレクトリと、MySQL のデータが入るディレクトリを作っておきます。 mkdir -p $BUILD_DIR/MYSQL_BUILD/MYSQL_DATA make gdb で追うため、デバッグオプションを付ける必要があります。 一つ(2つ?)のディレクトリで完結し、それ消したら「はい、さようなら」みたいな状態にしたいので、prefix の指定もします。 MySQL を make する際、最初は Makefile がありません。 別の make を使う必要があります。 brew install cmake というわけで cmake をインストール。 ついでに、構文解析器の部分も見るため、MySQL に使われている yacc のソースを追えるように、 brew install bison もやっときます。 で、cmake ですが……ようわかりません。 なのでオプションを見てみます。 cmake . -LH でオプション一覧。 とりあえず今回は、 cmake -DWITH_DEBUG:BOOL=ON -DMYSQL_DATADIR:PATH=$BUILD_DIR/MYSQL_BUILD/MYSQL_DATA -DCMAKE_INSTALL_PREFIX:PATH=$BUILD_DIR/MYSQL_BUILD WITH_DEBUG デバッグ用 gdb で読める MYSQL_DATADIR データ用のディレクトリ CMAKE_INSTALL_PREFIX make install したときに bin やら script やらが入るディレクトリ