Module jdk.jdi
Package com.sun.jdi

Interface Location

所有超级接口:
Comparable<Location>, Mirror

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

位置的行号的可用性取决于从目标虚拟机获得的调试信息级别。

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

Strata

位置的源信息取决于所使用的stratum。stratum是翻译序列中的源代码级别。例如,假设baz程序是用编程语言"Foo"编写的,然后转换为语言"Bar",最后转换为Java编程语言。Java编程语言stratum被命名为"Java",假设其他strata被命名为"Foo"和"Bar"。给定位置(通过sourceName()lineNumber()方法查看)可能在"Foo" stratum的"baz.foo"的第14行,在"Bar" stratum的"baz.bar"的第23行,在"Java" stratum的第71行。请注意,虽然Java编程语言可能只有一个参考类型的源文件,但这个限制不适用于其他strata - 因此应查询每个位置以确定其源路径。不指定stratum的查询(sourceName()sourcePath()lineNumber())使用VM的默认stratum(VirtualMachine.getDefaultStratum())。如果指定的stratum(无论是由方法参数显式指定还是隐式作为VM的默认值)为null或在声明类型中不可用,则使用声明类型的默认stratum(declaringType().defaultStratum())。请注意,在代码起源为Java编程语言源时,通常情况下只有一个stratum("Java"),并且将其作为默认返回。要确定可用的strata,请使用ReferenceType.availableStrata()

自版本:
1.3
参见:
  • Method Details

    • declaringType

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

      Method method()
      获取包含此位置的方法。
      返回:
      位置的Method
    • codeIndex

      long codeIndex()
      获取此位置所在方法内的代码位置。
      返回:
      表示方法内位置的长整型,如果位置在本地方法内则返回-1。
    • sourceName

      String sourceName() throws AbsentInformationException
      获取与此位置对应的源的标识名称。

      此方法等同于sourceName(vm.getDefaultStratum()) - 有关更多信息,请参阅sourceName(String)

      返回:
      指定源的字符串
      抛出:
      AbsentInformationException - 如果未知源名称
    • sourceName

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

      返回的名称是指定的stratum(请参阅描述strata的类注释)。

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

      参数:
      stratum - 要从中检索信息的stratum,或者为声明类型的默认stratum的null
      返回:
      指定源的字符串
      抛出:
      AbsentInformationException - 如果未知源名称
      自版本:
      1.4
    • sourcePath

      String sourcePath() throws AbsentInformationException
      获取与此位置对应的源的路径。

      此方法等同于sourcePath(vm.getDefaultStratum()) - 有关更多信息,请参阅sourcePath(String)

      返回:
      指定源的字符串
      抛出:
      AbsentInformationException - 如果未知源名称
    • sourcePath

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

      返回的路径是指定的stratum(请参阅描述strata的类注释)。

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

      参数:
      stratum - 要从中检索信息的stratum,或者为声明类型的默认stratum的null
      返回:
      指定源的字符串
      抛出:
      AbsentInformationException - 如果未知源名称
      自版本:
      1.4
    • lineNumber

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

      此方法等同于lineNumber(vm.getDefaultStratum()) - 有关更多信息,请参阅lineNumber(String)

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

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

      返回的行号是指定的stratum(请参阅描述strata的类注释)。

      参数:
      stratum - 要从中检索信息的stratum,或者为声明类型的默认stratum的null
      返回:
      指定源中的行数,如果信息不可用则返回-1;特别地,对于本地方法始终返回-1。
      自版本:
      1.4
    • equals

      boolean equals(Object obj)
      将指定的对象与此位置进行比较以检查是否相等。
      覆盖:
      equals 在类 Object
      参数:
      obj - 要比较的参考对象。
      返回:
      如果对象是一个位置并且它引用与此位置相同的VM中的相同点,则返回true。
      参见:
    • hashCode

      int hashCode()
      返回此位置的哈希码值。
      覆盖:
      hashCode 在类 Object
      返回:
      整数哈希码
      参见: