/ / Debugger не се прикрепя към отдалечена цел, ако скриптът на Shell е стартиран преди в IntelliJ - java, debugging, intellij-idea

Дебъгерът не се прикрепя към отдалечена цел, ако преди това е стартиран скрипт в IntelliJ - java, debugging, intellij-idea

Трябва да стартирам Java приложение с обвивкаскрипт, за да го прикачите по-късно (не по принцип, но с това конкретно приложение). Аргументите при стартирането на .jar в скрипта на shell са:

"-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y"

Но тази част работи. Ако ръчно изпълнявам скрипта на shell и изпълнявам конфигурацията за отстраняване на грешки от IntelliJ, всичко работи както трябва. Ако обаче кажа на IntelliJ да изпълни автоматично скрипта на shell, преди да се опита да свърже дебъгер, той не работи. Скриптовият скрипт се изпълнява и портът за отстраняване на грешки е отворен, но дебъгорът не се прикрепя към него.

Това е текущата конфигурация за дебъгера: Конфигуриране на отстраняване на грешки

Когато го стартирам, мога да видя, че скриптът на shell се изпълнява в конзолата:

Listening for transport dt_socket at address: 8000

Но дебъгерът не се прикрепя.

редактиране:
Разбрах проблема. Скриптовият скрипт блокира, затова IntelliJ не продължава и прикрепя дебъгер. Затова се опитах да го изпълня във фонов режим така:

nohup ./shell_script -debug > /dev/null &

Това работи добре в терминала. Тя незабавно продължава, ако изпълните командата. Ако обаче изпълнявам същата команда от IntelliJ, тя не се изпълнява във фонов режим и продължава да блокира.

Отговори:

0 за отговор № 1

Очевидно Ant е способен да създаде нов процес, когато изпълнява скрипт, който блокира. Затова успях да стартирам приложението с антена, която не е блокираща.

<target name="run" depends="clean,install-release">
<exec executable="pkill" spawn="false">
<arg line="-f application_name"/>
</exec>
<exec executable="bash" spawn="true">
<arg line="${target}/install/some.sh -debug"/>
</exec>
</target>