Module  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
    • 方法详细信息

      • method

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

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

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

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

        返回的字符串是此位置的源文件的不合格名称。 例如, java.lang.Thread将返回"Thread.java"

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

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

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

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

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

        int lineNumber​()
        获取此位置的行号。

        此方法相当于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)
        将指定的对象与此位置进行比较以获得相等性。
        重写:
        equalsObject
        参数
        obj - 与之比较的参考对象。
        结果
        如果对象是位置,并且它是否指向与此位置相同的VM中的同一点,则为true。
        另请参见:
        Object.hashCode()HashMap