- PR -

Webアプリのデバッグ方法

1
投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2005/04/16
投稿数: 51
投稿日時: 2005-10-28 10:13
Eclipseを使用しTomcat+JetSpeedで開発をはじめています。
EclipseでJetSpeedのプラグインというのは無いので
作成後はTomcatをシャットダウンしてから
ファイルシステム上で各ファイルを配備しています。

長く不明な事態に苦しんでいるのですが上手いデバッグ方法を知りません。
Eclipse上でテストしているわけではないのでSystem.out.printも効きません。

Webアプリ作成時のこんな状況下でデバッグするには、どのような方法を採用していますか?
よろしくお願いいたします。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2005-10-28 10:51
リモートデバッガで外部のVMにアタッチすればデバッグできます。

-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
まず、サーバー側のVMオプションにこの設定を追加して起動します。

次に、Eclipse側では[構成およびデバッグ]で[リモートJavaアプリケーション]を追加し、
接続プロパティのポート番号をaddress=で指定した値に設定してデバッグを開始すれば
先ほどのVMに接続してデバッグできますよ。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-10-28 11:16
どもです。がると申します。
Webアプリに限ったことでもないのですが。
特にオブジェクト系の場合、取り合えず「各クラス毎の単体テスト」
は常に有効だと思います。
で、各クラスが「クラス単位では問題なく」動いているので
あれば、あとは連結の問題ですから。
連結部分だけなら、それこそ「各クラスへのパラメタが
意図しているものかどうか」だけですから、出力先は
よりどりみどりではないかと思います。

基本的には「まず小さな単位でテスト」を充実させる
ことだと思うです。
後は「クラス自体を小さく作る」こと、かな?
# いやまぁやむを得ずでかいクラスってのもあるのですが。

Webアプリとはいっても、結局のところ「大本の入力」と
「最終的な出力」が通常のアプリケーションと異なるだけで、
後は同じですし。
だとすると、通常のアプリケーションと同様の手法を
用いることが可能なはずです。

後はまぁ…ちょっと「アレ」な発言ですが。
統合開発環境とかに頼らずにやってみましょう :-P
案外、それで見えてくるものもあるかと思うです。
明智重蔵
大ベテラン
会議室デビュー日: 2005/09/05
投稿数: 127
投稿日時: 2005-10-28 11:24
前のプロジェクトではlog4jのロギングを頼りにデバッグしてましたね





_________________

OracleSQLパズル
http://oraclesqlpuzzle.hp.infoseek.co.jp

[ メッセージ編集済み 編集者: 明智重蔵 編集日時 2005-10-28 11:26 ]
未記入
ベテラン
会議室デビュー日: 2005/04/16
投稿数: 51
投稿日時: 2005-10-28 22:35
色々なご意見をどうもありがとうございました。

自作のLogクラスがあったのでそれを使ってみることにしました。
(/WEB-INF/classes直下にログ出力パスを記載した.propertiesファイルを置き、
既存のLogクラスはその他必要なクラスと一緒にJarファイルにして
/WEB-INF/lib下に入れました。)

一つ一つ単体でSystem.out.printするイメージでログファイルに書き出していきます。

ちなみに無知な私は最初に「あしゅ」様が教えてくださった方法が
完全には理解できませんでした。もう少し勉強します。

ありがとうございました。
これからもよろしくお願い申し上げます。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-10-28 22:41
余談ですが・・・

FileOutputStreamをラップしたPrintStreamを作成して、
それをSystem.setOut/setErrでセットしてあげると、
System.out.printlnでファイル出力も可能です。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2005-10-29 00:44
引用:
ちなみに無知な私は最初に「あしゅ」様が教えてくださった方法が
完全には理解できませんでした。もう少し勉強します。



リモートデバッグというのは、Eclipseの外で起動したVMをデバッグすることです。
この機能を使えば、他のマシンで動いているVMもEclipseからデバッグできます。

例えば、データセンターにある本番機に繋げてデバッグすることすら可能です。

もちろん、そのためには多少の設定が必要で、デバッグする対象のJava VMを、
デバッガ(ここではEclipse)からの接続を受け付ける設定で起動する必要があります。

最初の書き込みで書いたVMオプションは、デバッガからの接続を受け付けるように
するためのオプションです。コマンドラインは次のような感じになります。

java -Xdebug -Xrunjdwp:transport=dt_socket… xxx.Main start

ステップ実行なども出来るので、他の方法より遙かにデバッグしやすいですよ。
いしと
会議室デビュー日: 2005/06/29
投稿数: 11
投稿日時: 2005-10-29 02:12
Eclipseでリモートデバッグと言うと、ここなんかが参考になります。
http://www.eclipsewiki.net/eclipse/?%A5%EA%A5%E2%A1%BC%A5%C8%A5%C7%A5%D0%A5%C3%A5%B0

ググればすぐ見つかるか…
1

スキルアップ/キャリアアップ(JOB@IT)