Прикрепите jdb к необработанному исключению
Итак, я запускаю программу на Java, как показано ниже
java -agentlib:jdwp=transport=dt_socket,address=8000, server=y,suspend=n MyClass
Затем я вручную присоединяю отладчик, как показано ниже
jdb -attach 8000
Я хотел бы знать, есть ли для меня возможность настроить JDB, чтобы он автоматически подключался к запущенному процессу (только) в случае неперехваченного исключения?
Причина в том, что я хотел бы избежать накладных расходов отладчика, пока не возникнет необработанное исключение. Но проблема, с которой я сейчас сталкиваюсь, заключается в том, что если отладчик не подключен, то JVM прерывается, когда возникает необработанное исключение.
РЕДАКТИРОВАТЬ:
От ОракуладокументыКажется, команда ниже делает то, что мне нужно, но для машин Windows.
java -agentlib:jdwp=transport=dt_shmem,server=y,onuncaught=y,launch=d:\bin\debugstub.exe MyClass
Кто-нибудь знает эквивалент Linux? Я попробовал приведенную ниже команду.
java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,onuncaught=y,suspend=n,launch=jdb MyClass
Отладчик выглядит так, как будто он подключается, но он немедленно выдает IOError.
Initializing jdb ...
java.io.IOException: Input/output error
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:272)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:273)
at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:154)
at java.io.BufferedReader.readLine(BufferedReader.java:317)
at java.io.BufferedReader.readLine(BufferedReader.java:382)
at com.sun.tools.example.debug.tty.TTY.<init>(TTY.java:751)
at com.sun.tools.example.debug.tty.TTY.main(TTY.java:1067)