Как программа Java может узнать, работает ли она в режиме отладки?
Приложение должно вести себя немного иначе в обычном режиме "полной скорости", чем в "режиме отладки" (при подключении отладчика при запуске в режиме отладки). Приложение взаимодействует через TCP с другим компьютером, другим процессом или внутри себя. Мой сотрудник хочет, чтобы мы использовали Socket.setSoTimeout(1000)
по умолчанию, так что чтение из сокета может блокироваться не более 1 секунды. При отладке этого, конечно, недостаточно, и приложение перестает работать так, как должно. Таким образом, решение было бы установить SO_TIMEOUT
выше, но только в режиме отладки (например: без ограничений). Теперь я не всегда устанавливаю точки останова или не хочу использовать отладочную сборку, где я мог бы самостоятельно установить свойство "debug". Иногда я прикрепляю отладчик (удаленная отладка). Я в основном использую Eclipse, поэтому решение, которое просто работает, в порядке.
Возможные ответы:
-
Чтобы узнать, запущен ли в режиме отладки, используйте следующий метод в
java.lang.management.*
илиjavax.management.*
... -
Ваш коллега ошибочен по причине X, вы не должны устанавливать
SO_TIMEOUT
на 1 секунду по умолчанию.
Update
Я знаю об использовании системного свойства, но я оставляю вопрос открытым, чтобы решить свой первоначальный вопрос.