1

在 Java 调试接口中,带有 StepRequest.STEP_MIN 参数的 StepRequest 是什么意思?https://docs.oracle.com/javase/7/docs/jdk/api/jpda/jdi/com/sun/jdi/request/StepRequest.html Java Docs 说“进入下一个可用位置”。下一个可用位置是什么?我了解 StepRequest.STEP_LINE 参数逐行运行,但 StepRequest.STEP_MIN 参数是什么?当我使用此参数运行时,单行有多个步骤请求,我无法理解。

4

1 回答 1

1

RequestManager javadoc

StepRequest.STEP_MIN 的 sizevalue 将在每次代码索引更改时生成一个 step 事件。它代表可用的最小步长,通常映射到指令级别。StepRequest.STEP_LINE 的大小值将在每次源行更改时生成一个 step 事件,除非行号信息不可用,在这种情况下将执行 STEP_MIN

查看类文件格式#The LineNumberTable

LineNumberTable 属性是代码(第 4.7.3 节)属性的属性表中的可选可变长度属性。调试器可以使用它来确定 Java 虚拟机代码数组的哪一部分对应于原始源文件中的给定行号。

可能 StepRequest 使用 code-array 和 line-number-table 来确定下一步的位置。

于 2018-06-05T12:11:46.500 回答