When attempting to debug a Java process not started with a jdwp agent (-agentlib:jdwp=transport=dt_socket,...) I started a debug server using
jhsdb debugd --pid <jvm_pid>
How can a jdb process be attached to such debug server?
Available connectors as listed by jdb -listconnectors | Select-String 'Connector' are:
Connector: com.sun.jdi.ProcessAttach Transport: local
Connector: com.sun.jdi.RawCommandLineLaunch Transport: dt_shmem
Connector: com.sun.jdi.SocketAttach Transport: dt_socket
Connector: com.sun.jdi.SocketListen Transport: dt_socket
Connector: com.sun.jdi.CommandLineLaunch Transport: dt_shmem
Connector: com.sun.jdi.SharedMemoryAttach Transport: dt_shmem
Connector: com.sun.jdi.SharedMemoryListen Transport: dt_shmem
I tried
jdb -connect com.sun.jdi.SocketAttach:port=<port>
java.io.IOException: handshake failed - connection prematurally closed
at jdk.jdi/com.sun.tools.jdi.SocketTransportService.handshake(SocketTransportService.java:139)
at jdk.jdi/com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:273)
at jdk.jdi/com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:119)
at jdk.jdi/com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:83)
at jdk.jdi/com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:563)
at jdk.jdi/com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:369)
at jdk.jdi/com.sun.tools.example.debug.tty.Env.init(Env.java:63)
at jdk.jdi/com.sun.tools.example.debug.tty.TTY.main(TTY.java:1176)
with all ports that jhsdb listens to.
jdb -connect com.sun.jdi.ProcessAttach:pid=<jvm_pid>
just hangs indefinitely without any output.
Attempt to attach to process of jhsdb fails as well:
jdb -connect com.sun.jdi.ProcessAttach:pid=<jhsdb_pid>
java.io.IOException: Not a debuggee, or not listening for debugger to attach
at jdk.jdi/com.sun.tools.jdi.ProcessAttachingConnector.attach(ProcessAttachingConnector.java:114)
at jdk.jdi/com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:563)
at jdk.jdi/com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:369)
at jdk.jdi/com.sun.tools.example.debug.tty.Env.init(Env.java:63)
at jdk.jdi/com.sun.tools.example.debug.tty.TTY.main(TTY.java:1176)
Fatal error:
Unable to attach to target VM.
I use Oracle JDK 21 on Windows 11 x86_64.