java - 当堆栈跟踪中存在类时在断点处停止
问题描述
当堆栈跟踪中存在特定类时,Intellij 有没有办法创建条件断点?或者,当在此堆栈跟踪中传递特定断点时。
给出的示例:假设我们有一些实用程序方法Utils.doSomething()
,我只想在从SomeClass.doSomething()
.
我确实知道有'禁用直到断点被击中'但这使得代码执行在满足初始条件后的任何时候都停止。
例子:
class SomeClass {
void doSomething() {
int y = 1; // Breakpoint here
Utils.doSomething();
Utils.doSomething();
}
void doSomethingElse() {
Utils.doSomething();
}
}
static class Utils {
static void doSomething() {
int x = 1; // Breakpoint with condition here
}
}
@Test
public void test() {
SomeClass someInstance = new SomeClass();
someInstance.doSomething();
someInstance.doSomethingElse();
someInstance.doSomething();
}
断点开启int y = 1;
条件为 on 的断点int x = 1;
它在Utils.doSomething()
第一次执行时停止,但在下一行再次执行SomeClass.doSomething()
时它不会停止。Utils.doSomething()
通过执行时它正确地没有停止SomeClass.doSomethingElse()
解决方案
我想出了添加这样的条件,它并不理想,但可以完成工作
Arrays.asList((Thread.currentThread().getStackTrace())).stream()
.anyMatch(ste -> ste.declaringClass.equals("debugging.SomeClass"))
推荐阅读
- ios - Swift Google Maps SDK,在我的应用程序内导航
- javascript - 通过属性javascript计算数组对象侧面数组中的对象
- webgl - 如何动态地将对象添加到场景中?
- python - 在 Python 中将交互列表转换为矩阵
- powershell - 基于时间的while循环
- git - 有没有办法让一个存储库由来自两个复制的存储库的文件组成,这些存储库继续从 github 上的两个独立存储库更新?
- javascript - 等待后,console.log 不返回异步结果
- python - 无法删除“Unmamed:”行
- c# - 将 SQL 日期时间与 C# DateTime.Now 进行比较
- ruby-on-rails - 使用 Active Record 的 Graphql-Ruby 映射