gpt4 book ai didi

java - Eclipse 条件断点 - 仅在其他断点之后

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:11:42 24 4
gpt4 key购买 nike

我正在调试一个执行大量方法调用的应用程序。例如,我想调试 methodA。它被调用了 1000 次。

但是,在我的主循环中,我只想在几条语句后开始调试方法 A。

public void methodA()
{
//does something nasty that I want to debug
}
public static void main( String[] args )
{
for (int i=0; i<1000; i++)
{
methodA();
}
methodB();
methodA();
}

我想在 methodA methodB 被调用之后开始中断。我真的不想更改我的代码(例如,插入一个 boolean 值并使断点以该 boolean 为条件)。

在 Eclipse 中可以实现这样的功能吗?或者有更好的选择吗?

最佳答案

A) 只需将命中数设为 1000。

它仅在 for 循环内的 methodA 不在某些条件下时才有效。

B)使用条件

将断点放在methodA中的第一条语句上。引用图片

[这里 methodA == test 并且我在第 14 行放置了断点]

enter image description here

右键单击断点并选择Breakpoint properties选项并添加以下条件。

StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
StackTraceElement e = stacktrace[2];
return (e.getLineNumber() == 9);

这里的 9 表示第二次调用方法 A(或测试)的行号。在您的代码中找到相同的行号并进行更改。

检查 StackTraceElement 的 javadoc除了行号,您还可以使用方法名称。也就是说,只有当它从函数 xyz 调用时才能中断。

enter image description here

C) 等待 eclipse 氧气 (4.7)

在下一个版本的 eclipse JDT 将提供断点触发点。所以你可以说 hit breakpoint y ONLY IF breakpoint x was hit before.

有了这个,您可以仅在给定方法流 [stacktrace] 上的断点处暂停。

例如:只有当调用流程为:

methodA() --> methodB() --> methodC() --> methodD() 不开启

methodA() --> methodC() --> methodD()

查看此 bug更多细节。将您的意见/建议添加到此错误中。

关于java - Eclipse 条件断点 - 仅在其他断点之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30725254/

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