StepRequest с параметром StepRequest.STEP_MIN

Что означает 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? Когда я работал с этим параметром, для одной строки выполнялись многоступенчатые запросы, и я не мог этого понять.


person rainyday    schedule 27.05.2018    source источник


Ответы (1)


Из RequestManager javadoc:

Значение размера StepRequest.STEP_MIN будет генерировать событие шага при каждом изменении индекса кода. Он представляет собой наименьший доступный размер шага и часто соответствует уровню инструкции. Значение размера StepRequest.STEP_LINE будет генерировать событие шага каждый раз, когда исходная строка изменяется, если информация о номере строки не доступна, и в этом случае вместо этого будет выполнено STEP_MIN

При просмотре формата файла класса #The LineNumberTable

Атрибут LineNumberTable - это необязательный атрибут переменной длины в таблице атрибутов атрибута Code (§4.7.3). Он может использоваться отладчиками для определения того, какая часть массива кода виртуальной машины Java соответствует заданному номеру строки в исходном исходном файле.

Вероятно, StepRequest использует массив кодов и таблицу номеров строк для определения местоположения следующего шага.

person Luca Basso Ricci    schedule 05.06.2018
comment
Было бы хорошо, если бы вы могли объяснить для одной строки с кодом i = 30; j = i; сколько раз будет сгенерировано событие step, если я использую STEP_MIN. Можно ли выполнить этот оператор за два прохода, по одному для каждого выражения? - person rainyday; 06.06.2018
comment
Вы правы, мне очень жаль. Моим первоначальным намерением было добавить образец кода, но в последний раз я использую JDI более 18 месяцев назад, и мне нужно время, чтобы собрать все инструменты, чтобы дать правильный пример. - person Luca Basso Ricci; 06.06.2018
comment
Я вижу, вы проработали в этой области довольно много времени. Можете ли вы назвать мне несколько полезных групп, форумов, в которых я могу задать вопросы по этой теме, stackoverflow не смотрит на эту тему. AFAIK единственный способ - выполнить каждый метод, чтобы понять его, потому что java-документы не очень полезны, и в Интернете не так много ресурсов по этой теме. - person rainyday; 10.06.2018
comment
Моей отправной точкой была docs.oracle.com/javase/ 7 / docs / technotes / guides / jpda /. Я скачал и посмотрел код всех примеров на этой странице; также я искал в Google для jpda, java stratum, java отладки и т. д. Я сделал именно то, что вы делаете сейчас: поиск, чтение, отладка кода и попробовал сам! - person Luca Basso Ricci; 11.06.2018