【问题标题】:Stop at breakpoints only in certain thread仅在某个线程的断点处停止
【发布时间】:2013-09-11 16:50:21
【问题描述】:

我有一些多线程代码,正在尝试在 Eclipse 中设置一些断点,以便进行一些调试。

我要设置的断点位于所有线程都使用的类中。但是,我只希望在主线程中时触发断点。有没有办法在 Eclipse 中做到这一点?

我尝试使用“条件”断点选项,但无法正常工作。

【问题讨论】:

  • 条件断点是要走的路。为什么他们不工作?
  • 我认为我的问题在于我尝试的表达方式。当我认为我应该做getId() == 1时,我主要使用Thread.currentThread().getId() == 0。到目前为止,我喜欢建议“名称”的答案,因为它们在调试器中更容易查看。
  • 是的,在这方面使用名称更好,特别是因为您可以自己设置。

标签: java eclipse multithreading debugging


【解决方案1】:

条件断点方法很好。条件应如下所示:Thread.currentThread().getName().equals("main")

如果您想为另一个线程设置断点,您只需将"main" 更改为特定于线程的名称,该名称可以通过 Thread 构造函数提供。

【讨论】:

    【解决方案2】:

    您应该能够通过使用依赖于线程本地数据的条件来设置条件断点。两个例子:

    • Thread.currentThread().getName(),
    • 一些值存储在ThreadLocal 中。

    【讨论】:

      【解决方案3】:

      断点属性对话框中应该有一个过滤项。在那里,您可以将断点限制为特定线程。但这仅在程序已经运行时才有效,因为该对话框显示了来自正在运行的 JVM 的所有线程。

      【讨论】:

      • 我自己试过了,但是 eclipse 一直在我没有选择的线程中停止。似乎条件断点是实现这一目标的唯一方法。
      猜你喜欢
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-30
      • 2015-09-11
      • 2011-12-31
      • 1970-01-01
      相关资源
      最近更新 更多