• 締切済み

eclipseでabstractクラスをデバックするには

いつもお世話になっております。 java1.6 eclipse3.3 にてabstractクラスのメソッドを呼び出している手前でブレークポイントを設定し、ステップインしてデバックしていくと、 abstractクラスの方のソースがデバックされます。 abstractクラスを継承している実際に流れているソースをデバックする事はできますでしょうか。 今はソースを追う時、abstractメソッドがきた場合、 そのメソッド名でプロジェクト全体を検索して、どのソースが実行されているのかチェックしていますが、たくさんのソースから継承されている場合、現在流れている処理が、どのソースのロジックかを特定するのが大変です。 簡単に特定する事はできますでしょうか。 よろしくお願いします。

  • Java
  • 回答数2
  • ありがとう数0

みんなの回答

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

下記のようなテストコードで試してみましたが、foo・barどちらのメソッドも、デバッガでstep intoで実行するとAbsClsではなくClsのほうのソースコードが表示されました。Eclipse 3.5です。 abstract class AbsCls { public void foo() { System.out.println("AbsCls.foo()"); } abstract public void bar(); } class Cls extends AbsCls { public void foo() { System.out.println("Cls.foo()"); } public void bar() { System.out.println("Cls.bar()"); } } AbsCls x = new Cls(); x.foo(); x.bar(); あと細かいですが、 ×デバック ○デバッグ です。

take_july
質問者

補足

ご回答ありがとうございます。 提示いただいたソースをeclipse3.3で実行してみたところ、 ご指摘のようにClsのほうのソースコードが表示されました。 ソースの書き方のせいなのか。 上手くいく場合と、いかない場合のソースを比べてみて試してみます。 ありがとうございました。 試してみてまた報告します。

  • BleuLune
  • ベストアンサー率57% (15/26)
回答No.1

>今はソースを追う時、abstractメソッドがきた場合、 意味が分からないです。abstaractメソッドは処理内容がないメソッドですのでデバッグできないです。 質問したいことはabstractメソッドをオーバーライドしたメソッドのうち、どのクラスのメソッドが実行されているかを知りたいということでしょうか? 上記であると仮定して標準出力(System.out.println();)を使う or log4jでログ出力するのが一番簡単だと思います。 文章を読んだ印象としては質問者さんは継承に対する理解が不足しているように思われますので、 一度、継承やメソッドのオーバーライドに関する知識を整理した方が良いと考えます。

take_july
質問者

補足

ご回答ありがとうございます。 たくさんオーバーライドしている場合、 すべてログを仕込むのでしょうか。 自分がつくった所なら構わないですが、他の人が作った所を 動かして解析する場合、できればソースに手を加えたくないです。 確かに自分の文章が良くないですが、 自分の質問しようとしている事が分かっていて、 あえて違う回答をしているように思えて残念です。

関連するQ&A

  • abstractメソッドの使い方

     漠然とした質問になりますが、よろしくお願いします。 今、前の人が記述したソースを読んでおりまして、 抽象クラスのメソッドの使い方で疑問が生じました。 lookメソッドに注目して頂きたいのですが、 public abstract class Editor { protected abstract boolean look() throws Exception; ・・・・・・・・・・・・ if(! this.look()) {   // ★ return false; } という記述があります。Editor クラスにはこの2つ以外のlookメソッドはありません。 そのためlook()では他のクラスで実装した戻り値が返ってくるはずですが、 thisを監視してデバックすると★の行上に処理のラインが来たとき、 thisにlookメソッドを含まないクラス名が表示されます。 thisがEditor でない事自体よく分かりません・・ abstractはあまり使ったことが無く、どこで実装されているのか(正確には、実装されているクラスのうちここで使われているのはどのクラスのlookメソッドか)を知りたいです。 知っている限りの方法では特定できませんでした。 よろしければアドバイスをお願いします。

    • ベストアンサー
    • Java
  • Eclipseでデバック時のソースがメソッド単位に表示される

    Eclipseの3.2.0を使用しております。 どこの設定を変えたのか忘れてしまったのですが ブレークポイントを追加して、デバックしようとすると 以前はソースの最初から最後までが表示されていたのですが 今は、ブレークポイントで止まったメソッドしか表示されません。 これはどこの設定を変えればよいのでしょうか?

  • abstract クラスについて

    お世話になります。 abstract クラスについて質問させて下さい。 例えば、以下のような場合、 abstract class ErrorC { abstract boolean errorKind( ); public void logOut( ) { //ログを記録する処理を記述する } } class DbError extends ErrorC { boolean errorKind( ) { //DB エラーが起こった時の処理を記述する logOut( ); } } class IoError extends ErrorC { boolean errorKind( ) { //入出力エラーが起こった時の処理を記述する logOut( ); } } ・ErrorC クラスではエラーの種類に関わらず、ログを記録する処理を  記述する。 ・それ以外の個々のエラー毎の処理は各サブクラスに具体的な処理を  実装させる。 ということで、プログラミングの作業量が軽減される等の利点は理解できる のですが、それを実現するには、普通にクラスの継承を行えばいいような 気がするのです。 abstract クラスがどういうものなのか、ということは何となく理解できたのですが、 それを使用する利点が分かりません。 ご教授宜しくお願い致します。

    • ベストアンサー
    • Java
  • eclipse-Tomcatでのデバッグについて

    eclipse-Tomcatでのデバッグについて 下記の構成 eclipse3.5 jdk1.6 Seasar2のプラグイン各種 Doltengを使用してプロジェクトを作成しています。 Actionクラスのアノテーション@Executeのメソッドにブレークポイントを設定して Tomcatを起動し、画面内で同メソッドが動くようなことをしても ブレークポイントで一時停止してくれません。 どこかに設定があるのでしょうか?

    • ベストアンサー
    • Java
  • Eclipseのデバッグ方法について質問です

    All-In-One-Eclipseバージョン3.1を利用しています。 ブレークポイントをつけて、eclipseから「Tomcat起動」をしているのですが、ソースのデバッグができません。 ブレークポイントで一旦止まるのですが、ステップインやステップアウトをしても行が進んでくれません。 普通ならブレークポイントにきた時に、デバッグ画面が開いてそのまま処理を追っていけると思うのですが。 ネットで探してみて、「ウィンドウ」→「設定」→「TomCat」→「Sourth Path」で、使っているプロジェクトのみにチェックを入れてみましたが、変わりませんでした。 解決方法を教えて下さい。 お願いします。

    • ベストアンサー
    • Java
  • VisualStudio2003でDLLのデバックをブレークポイントやステップインで行う方法を具体的に教えて下さい。

    VisualStudio2003でDLLのデバックをブレークポイントやステップインで行う方法を具体的に教えて下さい。DLLのプロジェクトは、もうひとつのexeファイルと合わさって、1つのソリューションを構成しています。現状では、デバックを実行しようとすると、”デバック情報がありません”というダイアログボックスが開き、ブレークポイントの丸の上には、?が表示されます。

  • デバック時に「ソースが見つかりません」の表示。

    開発環境: Windows 7 Home java 2 SDK 1.6.0_24 Eclipse 4.2 Juno Eclipseでデバッグ時にブレークポイントからステップインした際に「ソースが見つかりませんでした。」 のメッセージが表示されます。 呼び出されるjarファイルには「ソースの添付」をしてある状態です。 わかる方いましたらご教授願います。

  • Eclipse が変?

    Eclipse について質問です。 (1)「クラス名や、メソッドにポインタを近づけるとそのクラスやメソッドのJavaDocがホバー表示される」 (2)「Ctrlキー を押しながらクラス名をクリックする」とソースコード上に登場する別クラスのソースにジャンプできる と下記のページに書いてあるのですが、私の Eclipse V3.11では (1)(2)ともできません。どのように設定すれば良いのでしょうか? http://www.h7.dion.ne.jp/~s_wat/eclipse/eclipsetips.html#i6

    • ベストアンサー
    • Java
  • eclipseのデバッグ

    お世話になっております。 現在eclipse2.1 + TomCat4.1で開発をしております。 ブレークポイントをつけて、eclipseから「TomCat起動」をしているのですが、ソースのデバッグができません。 ブレークポイントのつけた箇所でソースは開くのですが、その後1行ずつ進んだりすることができずに止まってしまい、困っています。 ネットで探してみて、「ウィンドウ」→「設定」→「TomCat」→「Sourth Path」で、使っているプロジェクトのみにチェックを入れてみましたが、変わりませんでした。 ご存知の方いらっしゃいましたら、よろしくお願いいたします。

  • アブストラクトとインターフェースの簡単な一例文

    JAVAについて質問よろしくお願いします。 abstract抽象クラスとインターフェースについて下記理解なのですが、超かんたんな一例など欲しいのですが何かないでしょうか。たとえば package round1.chapter1; public class Helloworld { public static void main(String[] args) { System.out.println("こんにちは!"); } } というような一文です。 ~私の理解~ アブストラクトとは、違ったクラス内で同一メソッドがある場合は親クラスに置き、違ったメソッドがある場合は抽象クラスとして親クラスに置いて、実装はサブクラスに任せるという形式で使われる言葉 インターフェースとは、機能だけを仕様書として書いておき、定義されたとおりのメソッドを実装しないといけないという呼び出し方の統一を図る際に使われるメソッド置き場 ~~~~~ このふたつについてものすごく簡単な使用例を頂きたいです。 よろしくお願いいたします。

    • ベストアンサー
    • Java

専門家に質問してみよう