ColdFusionカフェテリア
SAMURAIZ

 

ColdFusionのデバッグ

作成日: 2009年9月1日
作成者:ハイミン・エンタープライズ(株) 千葉 博胤
佐藤 弘一
最終更新日: 2009年9月1日

ColdFusionのデバッグ

 連載第3回までの記事で、ColdFusionの基礎であるタグと関数、コンポーネントについて学びました。ここまで理解できていれば、一通りのプログラミングを行うことができると思います。
今回の連載第4回では、ColdFusionでの開発をより効率的に進めるために、デバッグの手法について解説したいと思います。
デバッグの仕方次第で開発効率は大きく変わってきますので、その時々に応じたデバッグ方法を身につけてください。

 

■ColdFusionデバッグ情報

まずは、ColdFusionデバッグ情報について解説します。これはもともとColdFusionの機能として備わっているものです。
ColdFusion Administrator(http://localhost/cfide/administrator)にて、デバッグ出力の設定を行うと、ブラウザ上に各種情報が表示されます。
 
連載第3回記事で作成したサンプルプログラムで見てみましょう。
 
ColdFusion Administratorにて、ColdFusion デバッグサービスを有効にします。その状態で、updCustomerとgetCustomerを実行してみましょう。
※連載第3回記事の一番最後のサンプルプログラムです。
 
そうすると、<cfdump>タグで出力されたquery情報の下に、様々なデバッグ情報が表示されます。
 

※クリックすると別ウインドウで拡大画像が表示されます。
 
Debugging Information
ColdFusionのバージョン情報や、クライアント側のブラウザなどの情報が表示されます。
 
Execution Time
ページ全体の処理時間や、コンポーネント単位の処理時間が表示されます。
レスポンスが悪い時など、どの処理でどのくらいの時間がかかっているのかがわかります。パフォーマンスを確認するのに非常に役に立ちます。
 
SQL Queries
SQLを使用している場合、実行されたSQL文や処理時間、レコード数(select文の場合)が表示されます。
プログラム中に思ったようなデータ取得されない時など、表示されているSQLを確認したり、SQLをコピー&ペーストしてDBで直接実行したりするのに役立ちます。
 
Scope Variables
当該ページで使用している変数(Application/CGI/Cookie/Request/Server/Form/url/Client)の変数名と、その値が表示されます。
変数を数多く使っていたり、変数の値を動的に入れ替えたりしていると、どの変数にどういう値が入っているのかわからなくなる事がありますね。そういった時に、わざわざ<cfoutput>タグや<cfdump>タグで出力しなくても、Scope Variables欄に変数の値が表示されます。
※Scope Variables欄はあくまでも、ブラウザの表示が完了した後の最終的な変数の値なので、ループ内などで動的に変数の値が入れ替わる場合は、ループ終了時の値のみ表示されます。
 
Exceptions
当該ページにエラーがある場合、エラー内容と該当プログラム、該当行数が表示されます。
コーディング後にブラウザで表示してみると思わぬエラーが・・・そういった時に一目でエラー箇所がわかります。
 

■タグを使用したデバッグ情報

<cfoutput>/<cfdump>タグを使用して、プログラム中の変数の値や、配列、クエリ結果を表示する事ができます。
連載第1回記事の「ColdFusionのタグの紹介」でも紹介しましたが、<cfoutput>タグは、ローカル変数などの単純変数を、<cfdump>タグはそれに加えて、配列などの複合変数をブラウザ上に表示します。前述のColdFusionデバッグ情報と違い、これらのタグはcfmファイル内のどこにでも記述できるので、例えば<cfloop>タグの中に記述すれば、ループ中の変数の値の遷移を見ることができます。


 

■CF拡張機能

Eclipse/FelxBuilderとColdFusion用のプラグインを使用することによって、ステップ実行など、より強力なデバッグ機能を使用することができます。
ColdFusionのプログラミングは何を使用するかは様々です。メモ帳を使ってもプログラミングをする事もできますし(あまりいないとは思いますが)、無償/有償の各種エディタを使用している方やEclipseやFlexBuilderを使用している方も多いと思います。
その中でも、Eclipse/FlexBuilderを使用すると、「Eclipse用ColdFusion 8エクステンション」というプラグインを使用することができます。これは、ColdFusion 8コードデバッガ、コードウィザード、RDS機能などの拡張機能を追加するプラグインです。
ダウンロード、インストール方法はAdobe社サイト(http://www.adobe.com/jp/support/coldfusion/downloads.html)をご参照ください。
 
実際に動きを見てみましょう。
 
まずは、Eclipseの設定を行います。
(1)Eclipseのメニューより、実行>>構成および実行を選択し、構成および実行ウインドウを起動します。
(2)ウインドウ左にある、ColdFusion Applicationをダブルクリックします。
(3)新規構成を作成できるので、Debug home page URLに、デバッグを行うページのURLを入力し、適用ボタンを押下します。
  私の環境では、「http://localhost/cfcafe/debug_test.cfm」と入力しました。
 

※クリックすると別ウインドウで拡大画像が表示されます。
 
次に、デバッグを行うサンプルプログラムを記述します。
サンプルプログラムとして、以下の5の階乗を求めるプログラムをコーディングしてください。

<cfset factorial = 5>
<cfset val = 1>
<cfloop index="i" from="1" to="#factorial#">
    <cfset val = val * i>
</cfloop>
<cfoutput>#val#</cfoutput>

 
そして、4行目の<cfset>タグのところにブレークポイントを置いてみてみます。
行数のところをダブルクリックすると、ブレークポイントを置くことができます。
 
これで準備は整いました。
早速デバッグを行ってみましょう。
 
(1)Eclipseのメニューより、実行>>構成および実行を選択し、構成および実行ウインドウを起動します。
(2)先ほど作成した構成を選択し、デバッグボタンを押下します。
(3)Debug Output BufferのBrowserか、IEなどのブラウザより、デバッグ対象のURLにアクセスします。
(4)ブレークポイントを置いた4行目で、実行が停止しているのが確認できます。
(5)Eclipseの変数タブをクリックすると、その時点での変数の状況を見ることができます。
 1回目のループでは、定数factorial=5、変数i=1、変数val=1となっています。
(6)F5キー(ステップイン)、F6 キー(ステップオーバー)、F7(ステップリターン)などによって、プログラムを順次進めていくと、その時点での変数の値を見ることができます。
 

※クリックすると別ウインドウで拡大画像が表示されます。
 

■さいごに

ColdFusionには現在専用のIDEはありませんが、Eclipseと専用のプラグインを利用してこのようなデバッグを行うことができます。このプラグインは、デバッグだけでなくコード補完などの機能もついており、これらをうまく駆使して、効率よい開発を行うことができます。
※現在、ColdFusion Builderのパブリックベータ版が公開されており(本稿執筆時点)、近々専用IDEが発売される予定です。
今回の第4回記事までは、ColdFusionでプログラム開発を行う上での基本的な部分の解説を行いました。
次回からは、今まで学んだ事を中心に、実際に簡単なシステムの構築を行ってみましょう。

 

ColdFusionの各種情報の配信


最新情報
■2022/12/14 〜
ColdFusion 基礎プログラミング
記事一覧(随時更新)

■2022/6/28
Adobe ColdFusion 2021
インストール セットアップ情報
CFサーバーのインストール

■2019/11/27
『ColdFusion 実験室』
実験7

■2019/11/27
Adobe ColdFusion 2018
インストール セットアップ情報
CFサーバーのインストール

■2017/6/26
『ColdFusion 実験室』
実験6

■2017/3/27
ColdFusion 2016 対応
インストール セットアップ情報
CFサーバーのインストール
CFビルダーのインストール

■2016/9/20
『ColdFusion 2016 リリース
Enterprise Edition 活用資料』
記事一覧

■2016/3/30
『ColdFusion 実験室』
実験4、実験5

■2015/8/10 〜
『ColdFusion クリニック』
記事一覧(随時更新中)

教材プログラム単体販売


ColdFusionユーザーグループ
ColdFusionユーザーグループ
Copyright 2012 Samuraiz Corporation. All Rights Reserved.