2016-03-03 2 views
1

в затмении и Visual Studio, я считаю, что размещение точки останова в определенной линииточки останова изменение местоположения путем изменения кода

1- public class HelloWorld { 
* 2- public static void main(String[] args) { 
    3- System.out.println("Hello, World"); 
    4- } 
    5- } 

, если я размещены точки останова в строке 3 и редактировать код в редакторе Блокнот, чтобы добавить что-нибудь, прежде чем эта строка затем откройте затмение, она автоматически укажет на строку 4 с точкой останова, поскольку она адаптировала линию, которую я выбрал раньше.

1- public class HelloWorld { 
    2- public static void main(String[] args) { 
    3- int i=0; 
* 4- System.out.println("Hello, World"); 
    5- } 
    6- } 

Мне нужно знать, где находится код в исходном коде затмения, который обрабатывает этот случай? или существует ли какой-либо известный алгоритм, который используется для адаптации местоположения точки останова после изменения кода?

Я не думаю, что он ищет в строке текста как при изменении содержимого строки он идти к нему w'ever изменения

+0

Ваш вопрос только о модификациях с другим редактором снаружи от Eclipse? – eztam

+1

no, Если я изменил его в пределах затмения, он также почувствует новую строку и правильно установит точку останова. что я на самом деле хочу понять, как это делается? – becks

ответ

0

Для управления синтаксиса, типов и т.д., современный IDE создает tree-model вашего исходного кода (аналогично тому, что компилятор делает перед компиляцией).

Изменения в коде - внутри или снаружи IDE - не требуют восстановления всего дерева, поэтому он может помнить, в каком узле «исходного дерева» находится точка останова, вместо того, чтобы запомнить только строку.

Это очень удобно, если вы активно отлаживаете и меняете код, вам не нужно перемещать все точки останова вверх или вниз, если код несколько строк вверх или вниз.


Это выглядит like this, точка останова (вероятно) прилагается не к линии, но к одному из этих узлов.

+0

спасибо за ответ. Как каждая строка строится на дереве? какой тип узла делает его доступным, даже если я изменил содержимое строки? Можете ли вы уточнить свою точку зрения? также, если вы можете ссылаться на любой открытый исходный код, который делает такую ​​вещь – becks

Смежные вопросы