How to attach jdb to a jhsdb debugd process?

20 views Asked by At

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.

0

There are 0 answers