gpt4 book ai didi

java - 如何在Eclipse中的Java程序中以非侵入的方式添加跟踪

转载 作者:行者123 更新时间:2023-12-02 00:05:24 25 4
gpt4 key购买 nike

注意:实际上,我会发布一个答案,但欢迎任何其他建议!

这个问题需要一些背景信息,以防止评论质疑我的目标......:-)

在我工作的地方,我们使用大量调试,大部分是使用 Eclipse 完成的。我知道有些人质疑调试实践,认为良好的设计和分析以及适当的单元测试可以轻松剖析错误。

嗯,我正在开发一个遗留应用程序的大型代码库(Java/Swing),该应用程序是在 Java 1.2(甚至 1.1)是最新版本时设计的,并且代码有很多缺陷,即使经过多年的工作它,我不能假装知道超过百分之十!我们的 JUnit 测试最多只覆盖了 1% 的代码(这是最近的实践......)。

因此,使用良好的调试器对于检查类、类中的数据、软件与我们提供的数据类型的行为等非常重要。

然而,分步也有其局限性:它可能很慢,我们可能会错过一些东西,并且在某些情况下它是不切实际的,例如查看 Paint() 方法或多线程部分。

所以我养成了这样的习惯,在这些困难的情况下,到处散布一些 System.out.println() 语句,看看调用了什么方法、使用什么参数、以什么顺序, ETC。我可以使用日志,但这种方式在某种程度上更简单,并且在问题解决后我删除了这些行。

这种做法的一个问题是,我们必须在提交之前仔细检查差异以消除这些行。另一个问题是我们使用 Perforce 作为 VCS,这很好,但需要显式 check out 文件(将其状态从只读更改为可写)以添加此类跟踪。它很慢(使用 Eclipse P4 插件)并且很麻烦。

所以,我的问题是:是否可以在不更改源代码本身的情况下向某些代码点添加上下文跟踪?每次运行一行时都可以记录“我在这里并且我看到了”。

我最初搜索了一个 Eclipse 插件,只找到了 C 调试器的提案,并找到了(我认为是在 SO 的评论中,但我丢失了引用,唉)一个解决方案,我将在下面发布,希望它对其他人可能有用。如上所述,任何替代方案都可以采用。

最佳答案

无需在 Eclipse 中使用插件:将断点添加到您想要跟踪的行,使其成为有条件的(例如,Ctrl+双击页边空白处的断点图标;或者右键单击 BP 行通过选中Conditional 复选框并保留Suspend when 'true' 选项,在 BP 列表中选择Breakpoint Properties)。

然后粘贴如下内容:

System.out.println("ClassName.methodName: " + parameter);
return false;

上下文自动补全有效(提醒:sysout后跟Ctrl+空格展开为System.out.println()),可以打印出当前线程名称,以及其他有用的信息。

实际上,return false; 行告诉 Eclipse 不要在此断点处停止。因此,“条件”代码被运行,并且 Eclipse 继续运行该代码。

我担心它会减慢代码速度,但对于现代计算机来说,它在人类水平上是无法察觉的。

注意:由于某种原因,当我在 false 后面输入分号时,Perforce 插件想要检查当前文件。当然,您可以取消此操作。如果你粘贴该行,它不会 react ...

关于java - 如何在Eclipse中的Java程序中以非侵入的方式添加跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13990130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com