отладка многопроцессорных Java-приложений - PullRequest
2 голосов
/ 14 мая 2019

Что такое хорошая система для отладки многопроцессорного Java-приложения, когда неясно, какой процесс следует отлаживать?

Например, в Python я могу использовать rpdb и добавитьстрока import rpdb; rpdb.set_trace(), поэтому выполнение блокируется до тех пор, пока я не подключусь к отладчику, например, nc 127.0.0.1 4444.

. По сравнению с вышеупомянутым быстрым и надежным методом, когда я использую отладчик Java, я вижу следующие проблемы:

  1. Убедитесь, что каждый процесс запущен с правильными аргументами для разрешения отладки - в моем случае не ясно, что запускает все процессы, поэтому не ясно, где изменитьаргументы.Есть ли способ изменить настройки по умолчанию на моем компьютере, чтобы всегда включать параметры jvm -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044?

  2. Решить, к какому процессу подключить отладчик до того, как нужный код будет запущен - сноване ясно, к какому процессу я должен подключиться, и удобно, что rpdb блокируется, пока не подключится отладчик, и вам не нужно идентифицировать идентификатор процесса.Есть ли что-нибудь подобное в Java?

1 Ответ

0 голосов
/ 14 мая 2019

Запустите Java с чем-то вроде:

java -agentlib:transport=dt_socket,server=y,suspend=y,address=1044

Бит suspend=y указывает виртуальной машине подождать, пока отладчик не подключится, прежде чем запускать main (). address - это порт для подключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...