Java Debug Interface

com.sun.jdi
インタフェース Location

すべてのスーパーインタフェース:
Comparable, Mirror

public interface Location
extends Mirror, Comparable

ターゲット VM の実行コード内の位置です。Location は、中断したスレッドの現在位置を特定するために使用されます (ネイティブプログラム内の命令ポインタまたはプログラムカウンタレジスタに類似)。これらは、ブレークポイントの設定位置を特定するためにも使用されます。

位置の行番号を有効利用できるかどうかは、ターゲット VM から利用可能なデバッグ情報のレベルに依存します。

複数のミラーインタフェースが位置を保持します。このような各ミラーは、Locatable インタフェースを拡張します。

Strata

Location のソース情報は使用される「層」によって変わります。層とは、一連の翻訳プロセスにおけるソースコードのレベルを指します。たとえば、baz という名前のプログラムを、Foo プログラミング言語で記述してから Bar 言語に翻訳し、最後に Java 言語に翻訳したとします。また、Java 言語層が Java、残り 2 つの言語層がそれぞれ Foo、Bar と名付けられたものとします。このとき、sourceName() メソッドと lineNumber() メソッドを使って取得する位置は、Foo 層の場合であれば baz.foo の 14 行目、Bar 層であれば baz.bar の 23 行目、Java 層であれば 71 行目という具合になります。ある参照型に対して、Java 言語のソースファイルが 1 つしか存在しない場合、ほかの言語層でも 1 つとは限りません。このため、ソースパスを決定するには個々の Location を参照する必要があります。なお、層を明示的に指定しないメソッド (sourceName()sourcePath()、および lineNumber()) の場合、VM のデフォルト層 (VirtualMachine.getDefaultStratum()) が使われます。メソッドパラメータとして明示的に指定されたか、VM のデフォルトとして暗黙に指定されたに関係なく、指定された層が null であったり宣言する型内で利用できなかったりした場合は、宣言する型のデフォルト層 (declaringType().defaultStratum()) が使用されます。通常の Java 言語のソースから派生したコードの場合、存在する層は 1 つだけ (Java だけ) であり、それがデフォルト層として返されます。利用可能な層を確認するには、ReferenceType.availableStrata() を使用します。

導入されたバージョン:
1.3
関連項目:
EventRequestManager, StackFrame, BreakpointEvent, ExceptionEvent, Locatable

メソッドの概要
 long codeIndex()
          この Location のメソッド内のコード位置を取得します。
 ReferenceType declaringType()
          この Location が属する型を取得します。
 boolean equals(Object obj)
          指定されたオブジェクトがこの Location と等しいかどうか比較します。
 int hashCode()
          この Location のハッシュコード値を返します。
 int lineNumber()
          この Location の行番号を取得します。
 int lineNumber(String stratum)
          この Location の行番号です。
 Method method()
          この Location を含むメソッドを取得します。
 String sourceName()
          この位置に対応するソースの識別名を取得します。
 String sourceName(String stratum)
          この位置に対応するソースの識別名を取得します。
 String sourcePath()
          この位置に対応するソースへのパスを取得します。
 String sourcePath(String stratum)
          この位置に対応するソースへのパス名を取得します。
 
インタフェース com.sun.jdi.Mirror から継承したメソッド
toString, virtualMachine
 
インタフェース java.lang.Comparable から継承したメソッド
compareTo
 

メソッドの詳細

declaringType

public ReferenceType declaringType()
この Location が属する型を取得します。通常、宣言する型は ClassType ですが、実行可能な位置は InterfaceType の static 初期化子内にも存在する場合があります。

戻り値:
この Location を含む ReferenceType

method

public Method method()
この Location を含むメソッドを取得します。

戻り値:
位置の Method

codeIndex

public long codeIndex()
この Location のメソッド内のコード位置を取得します。

戻り値:
メソッド内の位置を表す long 値。位置が native メソッド内の場合は null

sourceName

public String sourceName()
                  throws AbsentInformationException
この位置に対応するソースの識別名を取得します。

このメソッドは、sourceName(vm.getDefaultStratum()) と等価です。詳細については、sourceName(String) を参照してください。

戻り値:
ソースを指定する文字列
例外:
AbsentInformationException - ソース名が不明の場合

sourceName

public String sourceName(String stratum)
                  throws AbsentInformationException
この位置に対応するソースの識別名を取得します。この文字列は、ソースリポジトリ機構で解釈されます。

戻り値の名前は、指定された「層」に対するものです。層の詳細については、クラスのコメントを参照してください。

戻り値の文字列は、この Location のソースファイルの非修飾名です。たとえば、java.lang.Thread の場合、「Thread.java」 が返されます。

パラメータ:
stratum - 情報取得元の層。宣言する型のデフォルト層を使用する場合は null
戻り値:
ソースを指定する文字列
例外:
AbsentInformationException - ソース名が不明の場合
導入されたバージョン:
1.4

sourcePath

public String sourcePath()
                  throws AbsentInformationException
この位置に対応するソースへのパスを取得します。

このメソッドは、sourcePath(vm.getDefaultStratum()) と等価です。詳細については、sourcePath(String) を参照してください。

戻り値:
ソースを指定する文字列
例外:
AbsentInformationException - ソース名が不明の場合

sourcePath

public String sourcePath(String stratum)
                  throws AbsentInformationException
この位置に対応するソースへのパス名を取得します。この文字列は、ソースリポジトリ機構で解釈されます。

戻り値のパスは、指定された「層」に対するものです。層の詳細については、クラスのコメントを参照してください。

リファレンス実装では、Java プログラミング言語層のようにソースパスを明示的に指定しない層の場合、戻り値の文字列は、declaringType() のパッケージ名をプラットフォーム固有のパス名に変換したものに、この Location のソースファイルの非修飾名 (sourceName(stratum)) を付加したものになります。たとえば、Windows プラットフォームの場合、java.lang.Thread「java\lang\Thread.java」 を返します。

パラメータ:
stratum - 情報取得元の層。宣言する型のデフォルト層を使用する場合は null
戻り値:
ソースを指定する文字列
例外:
AbsentInformationException - ソース名が不明の場合
導入されたバージョン:
1.4

lineNumber

public int lineNumber()
この Location の行番号を取得します。

このメソッドは、lineNumber(vm.getDefaultStratum()) と等価です。詳細については、lineNumber(String) を参照してください。

戻り値:
ソース内の行を指定する int 型の値。情報を利用できない場合は -1 を返す。 特別に、native メソッドには常に -1 を返す

lineNumber

public int lineNumber(String stratum)
この Location の行番号です。行番号は、sourceName(stratum) により指定されたソースに対する相対位置を示します。

戻り値の行番号は、指定された「層」に対するものです。層の詳細については、クラスのコメントを参照してください。

パラメータ:
stratum - 情報取得元の層。宣言する型のデフォルト層を使用する場合は null
戻り値:
ソース内の行を指定する int 型の値。情報を利用できない場合は -1 を返す。 特別に、native メソッドには常に -1 を返す
導入されたバージョン:
1.4

equals

public boolean equals(Object obj)
指定されたオブジェクトがこの Location と等しいかどうか比較します。

オーバーライド:
クラス Object 内の equals
戻り値:
オブジェクトが Location で、オブジェクトがこの Location と同じ VM 内の同じ位置を参照する場合は true

hashCode

public int hashCode()
この Location のハッシュコード値を返します。

オーバーライド:
クラス Object 内の hashCode
戻り値:
整数のハッシュコード

Java Debug Interface