В intellij 2020.1, когда я нажимаю кнопку воспроизведения в отладчике, как остановить его от переключения потоков? (не дублировать) - PullRequest
0 голосов
/ 04 августа 2020

Возможно, я был недостаточно ясен в этом вопросе

https://stackoverflow.com/questions/62958507/how-to-have-intellij-play-just-the-thread-i-am-debugging-like-eclipse-does

, поэтому он был отмечен как дубликат

переключения между потоками в Intellij Idea

, но я сделал это и изменил политику приостановки точки останова на «Thread». Это никак не повлияло на поведение, поэтому я предоставляю здесь код.

Вот мой код для этого теста

public class TestDebugger {
    private static final Logger log = LoggerFactory.getLogger(TestDebugger.class);
    private Executor exec = Executors.newFixedThreadPool(5);

    public static void main(String[] args) throws InterruptedException {
        new TestDebugger().start();

        Thread.sleep(10000000);
    }

    private void start() {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                log.info("logger BREAKPOINT A thread="+Thread.currentThread().getName());
                log.info("logger A");

                log.info("logger A");
                log.info("logger A");
                log.info("logger A");
                log.info("logger A");
                log.info("logger A");
                log.info("logger BREAKPOINT B"+Thread.currentThread().getName());

            }
        };

        exec.execute(r);
        exec.execute(r);
        exec.execute(r);
    }
}

Я запускаю программу и потоки 1,2,3 все останавливаются на точке останова A. Эта часть хороша. Затем я нажимаю кнопку воспроизведения, когда на потоке 1 и за моей спиной он переключает потоки !!! Это очень раздражает и нежелательно. Фактически, я чувствую, что отладчик eclipse здесь работает НАМНОГО лучше, так как это поведение по умолчанию.

Фактически, если я нажимаю play 6 раз для всех 3 потоков, это журналы ...

ПРИМЕЧАНИЕ: Если я удалю другие операторы журнала в середине, он снова начнет работать, как я ожидал ....... странно

INFO: logger BREAKPOINT A thread=pool-2-thread-1
INFO: logger BREAKPOINT A thread=pool-2-thread-3
INFO: logger BREAKPOINT Bpool-2-thread-3
INFO: logger BREAKPOINT Bpool-2-thread-1
INFO: logger BREAKPOINT A thread=pool-2-thread-2
INFO: logger BREAKPOINT Bpool-2-thread-2

Первые ДВА журнала оба должны быть потоком 1, но вместо этого это поток 1, затем поток 3 .... grrrr. В любом случае, чтобы заставить это работать?

спасибо, Дин

1 Ответ

1 голос
/ 05 августа 2020

Это поведение является преднамеренным, и в настоящее время нет возможности его изменить. Источник: разработчик, ответственный за отладчик IntelliJ IDEA.

...