Что означает StepRequest с параметром StepRequest.STEP_MIN в интерфейсе отладки Java? https://docs.oracle.com/javase/7/docs/jdk/api/jpda/jdi/com/sun/jdi/request/StepRequest.html В Документах Java говорится: «Перейти к следующему доступному месту». Какое следующее доступное место? Я понимаю, что параметр StepRequest.STEP_LINE запускается построчно, но что такое параметр StepRequest.STEP_MIN? Когда я работал с этим параметром, для одной строки выполнялись многоступенчатые запросы, и я не мог этого понять.
StepRequest с параметром StepRequest.STEP_MIN
Ответы (1)
Значение размера StepRequest.STEP_MIN будет генерировать событие шага при каждом изменении индекса кода. Он представляет собой наименьший доступный размер шага и часто соответствует уровню инструкции. Значение размера StepRequest.STEP_LINE будет генерировать событие шага каждый раз, когда исходная строка изменяется, если информация о номере строки не доступна, и в этом случае вместо этого будет выполнено STEP_MIN
При просмотре формата файла класса #The LineNumberTable
Атрибут LineNumberTable - это необязательный атрибут переменной длины в таблице атрибутов атрибута Code (§4.7.3). Он может использоваться отладчиками для определения того, какая часть массива кода виртуальной машины Java соответствует заданному номеру строки в исходном исходном файле.
Вероятно, StepRequest использует массив кодов и таблицу номеров строк для определения местоположения следующего шага.