模块  jdk.jdi
软件包  com.sun.jdi

Interface Location

  • All Superinterfaces:
    Comparable<Location>Mirror

    public interface Location
    extends Mirror, Comparable<Location>
    目标VM的执行代码中的一个点。 位置用于标识挂起线程的当前位置(类似于本机程序中的指令指针或程序计数器寄存器)。 它们还用于标识设置断点的位置。

    位置的行号的可用性将取决于目标VM可用的调试信息的级别。

    几个镜像接口具有位置。 每个这样的镜子扩展了Locatable接口。

    Strata

    位置的源信息取决于使用的 层是一系列翻译中的源代码级别。 例如,假设baz程序用编程语言“Foo”编写,然后翻译成语言“Bar”,最后翻译成Java编程语言。 Java编程语言层命名为"Java" ,假设其他层被命名为“Foo”和“Bar”。 一个给定的位置(如由观察sourceName()lineNumber()方法)可能是在“baz.foo”的线14 "Foo"在“baz.bar”的阶层,第23行"Bar"地层和的线71 "Java"地层。 请注意,虽然Java编程语言可能只有一个源文件用于引用类型,但此限制不适用于其他层 - 因此应查阅每个位置以确定其源路径。 不指定层(查询sourceName()sourcePath()lineNumber() )使用虚拟机的默认层( VirtualMachine.getDefaultStratum() )。 如果指定层(无论是作为虚拟机的默认方法参数或隐显式指定)为null ,或者未在声明类型,声明类型的默认阶层使用( declaringType()defaultStratum() )。 请注意,在正常情况下,源自Java编程语言源的代码只有一个层( "Java" ),它将作为默认值返回。 确定可用的地层使用ReferenceType.availableStrata()

    从以下版本开始:
    1.3
    另请参见:
    EventRequestManagerStackFrameBreakpointEventExceptionEventLocatable
    • 方法详细信息

      • declaringType

        ReferenceType declaringType()
        获取此Location所属的类型。 通常,声明类型是ClassType ,但可执行位置也可能存在于InterfaceType的静态初始化程序中。
        结果
        包含此位置的ReferenceType
      • method

        方法 method()
        获取包含此Location的方法。
        结果
        的位置是方法
      • codeIndex

        long codeIndex()
        获取此位置方法中的代码位置。
        结果
        表示方法内位置的long,如果位置在本机方法内,则为-1。
      • sourceName

        String sourceName​(String stratum)
                   throws AbsentInformationException
        获取与此位置对应的源的标识名称。 解释此字符串是源存储库机制的责任。

        返回的名称用于指定的 (有关层的描述,请参阅class comment )。

        返回的字符串是此Location的源文件的非限定名称。 例如, java.lang.Thread将返回"Thread.java"

        参数
        stratum - 从声明类型的默认层或从 null检索信息的层。
        结果
        指定源的字符串
        异常
        AbsentInformationException - 如果源名称未知
        从以下版本开始:
        1.4
      • sourcePath

        String sourcePath​(String stratum)
                   throws AbsentInformationException
        获取与此位置对应的源的路径。 解释此字符串是源存储库机制的责任。

        返回路径用于指定的 (有关层的描述,请参阅class comment )。

        在参考实现中,对于没有明确指定源路径的层(Java编程语言层从不这样做),返回的字符串是转换为平台相关路径的包名declaringType() ,后跟源文件的非限定名称地点( sourceName(stratum) )。 例如,在Windows平台上, java.lang.Thread将返回"java\lang\Thread.java"

        参数
        stratum - 从声明类型的默认层或 null检索信息的层。
        结果
        指定源的字符串
        异常
        AbsentInformationException - 如果源名称未知
        从以下版本开始:
        1.4
      • lineNumber

        int lineNumber()
        获取此Location的行号。

        此方法相当于lineNumber(vm.getDefaultStratum()) - 有关详细信息,请参阅lineNumber(String)

        结果
        指定源中的行的int,如果信息不可用则返回-1; 特别是,对于本机方法,始终返回-1。
      • lineNumber

        int lineNumber​(String stratum)
        此位置的行号。 行号相对于sourceName(stratum)指定的源。

        返回的行号用于指定的 (有关层的描述,请参阅class comment )。

        参数
        stratum - 从声明类型的默认层或从 null检索信息的层。
        结果
        指定源中的行的int,如果信息不可用则返回-1; 特别是,对于本机方法,始终返回-1。
        从以下版本开始:
        1.4
      • equals

        boolean equals​(Object obj)
        将指定的Object与此Location进行相等性比较。
        重写:
        equals ,类 Object
        参数
        obj - 要与之比较的引用对象。
        结果
        如果对象是位置,并且它引用与此位置相同的VM中的同一点,则为true。
        另请参见:
        Object.hashCode()HashMap