MySQL データベースにクエリを実行するためのインターフェイスとして作成した Web フォームを使用しています。クエリを処理するためにいくつかの perl CGI スクリプトを作成しました。しかし、目的の出力が得られないため、スクリプトをデバッグする必要があります。それ、どうやったら出来るの?私はほとんどの場合、Perl のデバッグに Eclipse を使用していますが、現在は Web フォームのパラメーター (チェックボックス、リストボックス) をスクリプトへの入力として使用しています。Web ページからの入力を渡して、Eclipse でスクリプトをデバッグする方法はありますか? または、この場合、他のデバッグ方法はありますか? 私が自分自身を明確にしたことを願っています。ありがとう。
6 に答える
私はこのPerlモジュールをCGIデバッグに使用しています。通常のブラウザから実行しているときに、CGIスクリプトに送信されたすべてのデータをキャプチャできます。次に、キャプチャされたデータを使用して、どこからでも(コマンドライン、デバッガー内で)スクリプトを「再生」できます。
CGI :: Inspectは有望に見えますが、私はまだ試していません。
通常のCGIセッション中にDevel::DumpTraceを使用すると(データはDUMPTRACE_FHを介してファイルに記録されます)、実際のデバッガーを使用せずに詳細なデバッグを行うことができます。
はい、もちろん、Apache のエラー ログを使用してデバッグを行うことができます。これは非常に怠惰ですが効率的な作業方法です。
Eclipse を使用しているとのことですが、Perl 開発用の EPIC プラグインも使用していると思います。CGI をデバッグするために Eclipse/EPIC を構成する方法については、この章を参照してください。
正確に何をデバッグしたいかは明確ではありませんが、いくつかのヒントがあります。
- Apacheで実行している場合、警告はに送信されるため
error.log
、そこで変数を追跡できます。 - CGI.pmモジュールを使用すると、コマンドラインから(パラメーターを使用して)CGIスクリプトを実行できます。
EclipseにCGIをシミュレートする方法があることを願っています。
ActiveStateのKomodoIDEを使用しており、CGI(入力パラメーターを含む)をシミュレートできるため、この目的に適したツールとしてお勧めできます。IDEは無料ではありませんが、これを頻繁に行う場合は、これを投資と見なしてください。(私はActiveStateと提携していません-ただ幸せな顧客です。)
webawesome.plと呼ばれるperlで記述された架空のCGIプログラムがあり、それにnameとageの2つのパラメーターを渡したい場合は、次のようなシェルコマンドを使用できます。
prompt> perl -d webawesome.pl name=sifl age=21
これでperlデバッガーが表示され、プログラムをステップ実行できます。コマンドラインからのキーと値のペアがCGI.pmによってフォームパラメーターとして読み込まれます。
Eclipseでこれらのコマンドラインスイッチを設定することは、私が恥ずかしがらないviユーザーであり、2、3年の間Eclipseを使用していないため、読者の練習問題として残されています。実行/デバッグオプションを設定するためのダイアログがあることを知っています。
Firebug または Fiddler を使用して、フォームから行われたリクエストを監視し、自分が思っているとおりに送信していることを確認できます。また、ファイルを開いて、実行open(fh,">>debug.txt")
中の SQL 呼び出しをログ ファイルに出力することもできます。また、オブジェクトの構造を確認できるように、オブジェクトをきれいに出力する Data::Dumper について学習することをお勧めします。