Во время отладки, как оценить кусок кода в целевой VM отладки? - PullRequest
1 голос
/ 22 июня 2010

Во время отладки, например, в Eclipse, можно оценивать выражения выражений или условные точки останова.Как правило, они оцениваются на стороне клиента.Например, при отладке из Eclipse, это сам Eclipse, а не целевая виртуальная машина отладки, которая оценивает эти выражения.Это может быть довольно дорогостоящим, особенно в случае условных точек останова, поскольку отлаживающая виртуальная машина (т. Е. Eclipse) должна становиться активной при каждом попадании на точку останова, даже если условие оценивается как ложное.протокол отладки позволяет ему вместо этого оценивать такие выражения или условные контрольные точки в целевой VM отладки, так что целевая VM уведомляет отлаживающую VM только тогда, когда выражение / условие действительно оценивается как TRUE.

1 Ответ

0 голосов
/ 01 сентября 2011

Кроме IDE (ab), использующего горячую замену кода для замены тела метода телом с пустым блоком if и помещением туда (условной) точки останова, в http://download.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html я не могу найти ничего, что могло бы помощь в этом.

В EventRequest.Set есть exprId, который задокументирован как "на будущее" и не раскрывается через JDI BreakpointRequest, поэтому я не думаю, что это работает или будет работать.

Кстати, оценка происходит внутри целевой виртуальной машины (т. Е. Если вы используете equals () в своем выражении, equals () будет выполняться в вашей целевой виртуальной машине), но оценка будет запущена с отладочной виртуальной машины.

...