【问题标题】:breakpoints location change by modifying code通过修改代码改变断点位置
【发布时间】:2016-03-03 11:45:08
【问题描述】:

在 Eclipse 和 Visual Studio 中,我发现在某行放置一个断点

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

如果我在第 3 行放置断点并在记事本编辑器中编辑代码以在该行之前添加任何内容然后打开回 Eclipse,它将自动指向第 4 行,因为它适应了我之前选择的行。

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

我需要知道处理这种情况的 Eclipse 源代码中的代码位置吗?或者是否有任何已知算法用于在修改代码后调整断点位置?

我不认为它会逐行搜索,因为当我更改行的内容时,它确实会转到它,而不会发生变化

【问题讨论】:

  • 您的问题只是关于使用 Eclipse 之外的其他编辑器进行的修改吗?
  • 不,如果我在 eclipse 中修改它,它也会感知新行并正确放置断点。我真正想要的是了解这是如何完成的?

标签: eclipse algorithm breakpoints


【解决方案1】:

为了控制语法、类型等,现代 IDE 会为您的源代码创建树模型(类似于编译器在编译之前所做的)。

代码的变化——在IDE内部或外部——不需要重建整个树,因此它能够记住断点在“源树”的哪个节点,而不是只记住行。

这很方便,如果您正在积极调试和更改代码,则不必向上或向下移动所有断点,如果代码向上或向下移动几行。


看起来 like this ,断点(可能)不是附加到行,而是附加到其中一个节点。

【讨论】:

  • 感谢您的回答。树中的每条线是如何分布的?即使我更改了行内容,什么类型的节点也可以访问它?你能澄清你的观点吗?另外,如果您可以参考任何做这种事情的开源代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多