В дополнение к ответу Шамита Вермы:
При работе с отладочными многопоточными Java приложениями лучше не использовать стандартные точки останова, которые приостанавливают только поток, в котором установлена точка останова,Определение стандартной точки останова в вашем приложении приведет к разрыву только связанного потока.Другие потоки все еще будут работать.В eclipse отладчик по какой-то причине заставит отладчик пропускать точки останова, если другие потоки уже запущены.
Решение для отладки Java:
Определение точки останова в нужном потоке (метод @ Run () iожидайте ..), щелкните правой кнопкой мыши точку останова -> свойства точки останова.
В диалоговом окне свойств точки останова установите флажок «Приостановить виртуальную машину» вместо «Приостановить поток».
Если вы делаете это так, то всеВиртуальная машина будет приостановлена в случае достижения точки останова.
В C / C ++ CDT используйте установить блокировку планировщика на :
As@Employed Russian говорит, что в answer-to-other-question команда GDB:
set scheduler-locking on
приведет к тому, что другие потоки C / C ++ останутся приостановленными, в то время как текущий поток сможет перейти к следующему шагу.Эту команду можно выполнить в Eclipse / CDT Debug, приостановив выполнение программы и открыв перспективу «Debugger Console» и введя: установить блокировку планировщика на Позже ее можно вернуть в нормальное состояние с помощью: set планировщик-locking off
См. документацию GDB для получения дополнительной информации о режиме блокировки планировщика и без остановок , который позволяет другим потокам работать при остановке одногонить.