Какие свойства по умолчанию использует eclipse для запуска процесса Java в режиме отладки? - PullRequest
3 голосов
/ 17 апреля 2010

Я хотел бы подключиться к процессу Java, запущенному Eclipse с помощью отладчика командной строки, но не знаете, каковы свойства по умолчанию запущенного Java-процесса Eclipse? Я не против использовать присоединение с использованием сокетов, но не уверен, насколько медленнее это будет?

Ответы [ 2 ]

2 голосов
/ 17 апреля 2010

как насчет

-Xdebug -Xnoagent -agentlib:jdwp=transport=dt_socket,suspend=n,address=localhost:12345

тогда вы можете подключить Java-отладчик к порту 12345

0 голосов
/ 09 сентября 2012

Я исследовал различия при запуске приложений Java в Eclipse между «Run» и «Debug». Я использовал Process Explorer от Sysinternals, чтобы увидеть командную строку процесса Java, который Eclipse разветвляет при запуске приложения Java с любой из этих опций. (Я в системе Windows 7)

С «Run HelloWorld»

"C:\Program Files (x86)\Java\jdk1.7.0_07\jre\bin\javaw.exe" -Dfile.encoding=Cp1252 -classpath C:\workspace-juno\HelloWorld\bin com.example.HelloWorld

.......

С помощью «Debug HelloWorld»

"C:\Program Files (x86)\Java\jdk1.7.0_07\jre\bin\javaw.exe" -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:2404 -Dfile.encoding=Cp1252 -classpath C:\workspace-juno\HelloWorld\bin com.example.HelloWorld

(Адресный порт изменился в последующих вызовах, например, он стал address=localhost:2564 при следующем вызове.)
Таким образом, java (или javaw) фактически запускается с различными параметрами в зависимости от того, использовались ли «Run» или «Debug»: запуск «Debug» добавляет дополнительную опцию agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:NNNN. Это стандартный способ перевода JVM в режим отладки. Программа HelloWorld сначала будет ожидать успешного подключения к нему отладчика, прежде чем продолжить (опция suspend=y). JWM HelloWorld автоматически подключится к некоторому отладчику, работающему по адресу localhost: NNNN (... опция address=localhost:NNNN и неявная опция по умолчанию server=n). (... Oracle предоставляет достоверную информацию о agentlib опциях запуска )

Сам Eclipse будет действовать как приложение отладчика, предоставляя порт NNNN. JWM HelloWorld будет подключаться к этому порту через собственный порт с номером NNNN + 1 (на вкладке TCP / IP этого процесса можно увидеть используемые порты процесса с помощью Process Explorer).

...