Movable Type でデバッグを捗らせる

MT-column > Tips
| | コメント(0) | トラックバック(0)

これはMovable Type Advent Calendar 2012の3日目の記事です。

Movable Type や プラグインの開発時のデバッグを捗らせる話を書きます。

開発用の MT の起動

開発時には MT を PSGI 版で起動しておくと便利です。サーバにはドキュメントにも書かれているStarmanを利用すると簡単でトラブルが少ないと思います。

starman コマンドからオプションを指定しないで MT を起動している場合は、コードを変更しても自分で再起動するまで反映されないので、開発時には -R オプションを付けて指定したディレクトリ以下のファイルに変更があると自動で再起動されるようにしておくと便利です。

LANG=C starman -R `pwd`/extlib,`pwd`/plugins,`pwd`/addons --pid=/path/to/pidfile mt.psgi

(Linux 環境では Linux::Inotify2 が、Mac 環境では Mac::FSEvents が入っていることを確認しておいてください。)

また starman コマンドはデフォルトで本番モードになりますが、-E development を指定すると開発モードになりアクセスログを表示させたりすることができます。

LANG=C starman -E development -R `pwd`/extlib,`pwd`/plugins,`pwd`/addons --pid=/path/to/pidfile mt.psgi

print デバッグ

最もお手軽なデバッグ方法として、コードの中で変数の値を表示してみる print デバッグと呼ばれる方法があります。MTをPSGI版で起動している場合には、表示させたい場所で単に print するだけで starman を起動したターミナルにデバッグ情報を表示することができます。

print($value);

use Data::Dumper;
print(Dumper($obj));

デバッガを利用したデバッグ

MTをPSGI版で起動すればデバッガを利用することもできます。

LANG=C perl -Sd starman --workers=1 --pid=/path/to/pidfile mt.psgi

プログラムの中に以下の一行を入れておけば、その場所で変数の内容を確認したり、スタックトレースを確認したりできます。

$DB::single = 1;

Perl のデバッガの使い方は Google で検索すると参考になる記事を見つけることができます。Perl デバッガ

エラー発生時にスタックトレースを表示させる

mt-config.cgi に DebugMode 1 と書いたり、「システム > 全般設定」で「デバッグモード」に「1」を設定するとMTがデバッグモードになり、エラー発生時に詳細情報が表示されるようになるのですが、

without-stacktrace.png

デバッグ時にはスタックトレースも表示してくれると便利です。以下のファイルを plugins に入れておくと、エラー発生時にスタックトレースが表示されるようになります。

with-stacktrace.png

LogExporter  を使ってログをコンソールに流す

LogExporter というプラグインを使うと以下の情報をファイルに出力することができます。

  • MTのログ
  • SQLのクエリログ
  • Perl の警告など

出力したファイルを tail -f でコンソールに流しておくとデバッグに便利です。

トラックバック(0)

このブログ記事を参照しているブログ一覧: Movable Type でデバッグを捗らせる

このブログ記事に対するトラックバックURL: http://tec.toi-planning.net/mtos/mt-tb.cgi/978

コメントする

Created by ToI企画
Powered by Movable Type 5.2.2