ブログ

こんにちは、尾崎です。

今回はAIipoのjava側のデバック方法を紹介したいと思います。

Aipoでは画面を表示する処理やデータベースに登録する処理などをJavaで実装しているため、新しい機能を開発するときなどに

画面が表示できない、データベースに登録できないなどの不具合が出てきた場合、デバックは非常に役に立ちます。

実際に、掲示板でトピックを追加した際にデータベースに登録する処理を追っていきながら、Aipoではどのようにデバックしていけばいいかについて、紹介していきたいと思います。

開発環境については、普段AipoはEclipseを使って開発しているため、Eclipseを使ってJavaのデバックを行いたいと思います。

まず、トピックを追加する処理はMsgboardTopicFormJSONScreenのgetJSONStringを始点としていますので、このメソッドにブレークポイントを設定します。

ブレークポイントの設定の仕方は設定したい行の行番号の隣をクリックするだけです。解除したい場合は青い点をクリックすれば解除出来ます。

java_debug2.jpg
ブレークポイントを設定しましたら、実際に掲示板に投稿してみましょう。投稿を行うと、ブレークポイントを設定した場所で処理が止まり、下記のようにデバックの画面に移ると思います。

java_debug3.jpgもしここで処理が止まらない場合などは、vmファイルのエラーか、submitの際に実行されるJavascriptのエラーの可能性があります。

止まった処理を実行していく場合、画面の左上にある以下のボタンを使って処理を順々に実行させていきます。

java_debug4.jpg

 

 

左から

  • 終了したすべての起動を除去
  • 再開
  • 中断
  • 終了
  • 切断
  • ステップイン
  • ステップオーバー
  • ステップアウト

となっています。実際に今回使うのは再開、ステップイン、ステップオーバー、ステップアウトとなります。

現在ブレークポイントはgetJSONStringの47行目にしか設定していなので、再開を押してしまうと、処理がすべて終わってしまいます。

なので、ステップオーバーを押して、一行ずつ実行して行きます。

 if (formData.doInsert(this, rundata, context)) {

この行までステップオーバーで実行したら、ステップインでformData.doInsetを実行します。今回はgetJSONStringの始めの行にブレークポイントを設定しましたが、getJSONStringにブレークポイントを設定するならば上の行に設定した方が効率よくデバックできます。

formData.doInsetを実行していきますが、またステップオーバーで一行ずつ実行するのは手間なので、データベースに登録する処理を行っている、formData.doInsetの以下の部分にブレークポイントを設定して、再開を押すと処理が205行目まで行われて、処理が止まります。

java_debug5.jpg

この行ではsetFormData,validate,insertFormDataの3つのメソッドを実行し、データベースに登録する処理というのは、insertFormDataで行います。

この行でステップインを実行しますと、setFormDataの始めの行で処理がとまりますが、ここでステップアウトしますと、setFormData内を全て実行して、formData.doInsetの205行目に戻ってきます。

またここでステップインを行いますと、validateの始めの行で処理が止まります。同様にステップアウトを行いますと、またformData.doInsetの205行目に戻ってきて、ここでステップインをすることでinsertFormDataの始めの行で処理が止まります。

再度デバックする際に効率よくデバック出来るように、今処理が止まっている行にブレークポイントを設定しておくといいでしょう。

insertFormDataでデータベースに登録しますが、画面で入力した値がちゃんとformDataにセットされているかを確認したい時などがあります。

このような場合は値を見たいみたい変数を選択し、右クリックからインスペクションを選ぶか、変数のウィンドウから変数を探して、値をみることが出来ます。

また変数に代入されている値をみるだけでなく、note.getValue()などの式の返り値をインスペクションで確認できたり、右クリックから監視を選んで、常にその式の返り値をウィンドウで確認することも出来ます。

java_debug6.jpg

また不具合の修正をする時など、値を強制的にnullにしたい場合や値を変更したいことがあるかと思います。

そのような場合は変数のウィンドウから変えたい変数を右クリックして値の変更を選び、変えたい値を入力すれば、値を強制的に変更することが出来ます。

java_debug9.png

全ての値をオブジェクトにセットしたら、

Database.commit();

上記のメソッドでデータベースに登録します。この行を実行する前に

java_debug7.png

上記の部分にブレークポイントを設定しておきましょう。

もし、データベースの登録処理でエラーが出た場合catchされるのでexceptionの中身を見るなどして、

エラーの原因を探り、不具合を修正しましょう。

ここまでがトピックを追加した際にデータベースに登録する処理です。

再度トピックを追加して正しく処理が終わるか確認したい場合このまま実行すると、ブレークポイントを設定したままなので処理が止まってしまいます。

ブレークポイントを設定したまま、ブレークポイントでブレイクさせないようにするには、

java_debug8.png

左のようなボタンがブレークポイントのウィンドウにありますので、これを押してもらえば、全てのブレークポイントをスルーして処理を行えます。

新しい機能を開発する際にも、不具合を修正する際にも、デバックは役に立ちますので、ぜひ試してみてください。

現在私たちの仲間を募集しています!

2013/09/10 16:00:00
尾崎