模块 jdk.jdi

接口 Location

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

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

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

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

地层

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

自从:
1.3
参见:
  • 方法详情

    • declaringType

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

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

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

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

      此方法等效于 sourceName(vm.getDefaultStratum()) - 有关详细信息,请参阅 sourceName(String)

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

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

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

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

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

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

      此方法等效于 sourcePath(vm.getDefaultStratum()) - 有关详细信息,请参阅 sourcePath(String)

      返回:
      指定来源的字符串
      抛出:
      AbsentInformationException - 如果源名称未知
    • 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 - 要比较的参考对象。
      返回:
      如果对象是一个位置并且它指的是与此位置相同的虚拟机中的相同点,则为真。
      参见:
    • hashCode

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