今日からはじめる Apache モジュールデバッグ

まずは User-Agent を偽装する

Firefox をお使いなら User Agent Switcher という拡張モジュールをインストールすることで docomo の携帯を装うことができます。

https://addons.mozilla.org/ja/firefox/addon/59

この他にも IE でしかアクセスできないサイトにアクセスするときなど非常に重宝する拡張モジュールです。

HTTP のログを眺める

FirefoxLive HTTP Headers という拡張モジュールをインストールすると、サーバーとブラウザとのやりとりが確認できます。変なメッセージが飛んでいないか、来ていないか確認することで原因の糸口になることもあります。

https://addons.mozilla.org/ja/firefox/addon/3829

Apache のログを眺める

Apache の設定ファイルに「LogLevel debug」を追加すると、デフォルトで /var/log/apache/error.log に mod_chxj の動作ログが吐かれます。これを tail -f して眺めつつ操作をするとエラーの原因がわかったりします。

mod_chxj のソースをいじる

最後の手段は、mod_chxj のソースをいじる方法です。DBG や ERR などのマクロが定義されているので、これを駆使して適宜デバッグメッセージを出します。ソースをいじったら mod_chxj の再ビルド・再インストール・Apache の再起動が必要です。普段スクリプト言語しか触ったことがない人にはハードルが高いかもしれません。

mod_chxj 自体はかなり見通しのよい C 言語でかかれているので、眺めて見るといい勉強になります。

$ make
$ sudo make install
$ sudo /etc/init.d/apache2 restart

Apacheデバッグ

万策つきたら ApacheGDBデバッグします。Apache を 1 行づつ実行できますが、これだと 1 リクエスト見るのに1時間かかるかもしれません・・・。

http://memo.majide.com/index.php?%A1%DAApache%A1%DBgdb%A4%CB%A4%E8%A4%EBhttpd%A4%CE%A5%C7%A5%D0%A5%C3%A5%B0