gpt4 book ai didi

java - 在 Eclipse 控制台中包含与 System.out.print 语句对应的文件名/行号

转载 作者:搜寻专家 更新时间:2023-11-01 02:06:55 25 4
gpt4 key购买 nike

有没有办法在 Eclipse 控制台中显示行号?

我的目的是在 Eclipse 控制台中显示生成输出的文件/行号,而不是消息的连续行号(尽管这也可能是一个有趣的问题)。

我正在寻找类似于 Chrome 的 javascript 控制台的东西,其中每一行都有一个链接,可以将您带到打印它的函数。

最佳答案

您可以创建自定义 PrintStream 来检查当前堆栈跟踪并在输出中包含文件/行号。然后,您可以使用 System.setOut/System.setErr 使所有 stdout/stderr 输出包含此信息。

通过正确格式化它,Eclipse 会将其作为堆栈跟踪元素获取并生成链接。

这是一个完整的演示:

public class Main {
public static void main(String args[]) {
System.setOut(new java.io.PrintStream(System.out) {

private StackTraceElement getCallSite() {
for (StackTraceElement e : Thread.currentThread()
.getStackTrace())
if (!e.getMethodName().equals("getStackTrace")
&& !e.getClassName().equals(getClass().getName()))
return e;
return null;
}

@Override
public void println(String s) {
println((Object) s);
}

@Override
public void println(Object o) {
StackTraceElement e = getCallSite();
String callSite = e == null ? "??" :
String.format("%s.%s(%s:%d)",
e.getClassName(),
e.getMethodName(),
e.getFileName(),
e.getLineNumber());
super.println(o + "\t\tat " + callSite);
}
});

System.out.println("Hello world");
printStuff();
}

public static void printStuff() {
System.out.println("More output!");
}
}

Eclipse 控制台:

enter image description here

不过,我认为这是一种 hack,除了随意调试外,我不会将其用于任何其他用途。

关于java - 在 Eclipse 控制台中包含与 System.out.print 语句对应的文件名/行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30437019/

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