Thanks, Sharath!

On 21-Aug-18 14:46, Sharath Ballal wrote:

Hi Egor,

For JDK 9 and above try this.

1. Run the debuggee and get the <pid>

2. <jdk>\bin\jhsdb debugd <pid>  (you may need sudo on some platforms)

3. <jdk>\bin\java -Dsun.jvm.hotspot.runtime.VM.disableVersionCheck -m jdk.hotspot.agent/sun.jvm.hotspot.tools.HeapDumper localhost (sudo may be needed on some platforms)

I realized that more bugs are required to be opened.

1.  JDK 9 and above jhsdb jstack and other jhsdb tools do not take debug server as a parameter

2.  JStack and some other SA tools when invoked in the following manner gives a " remote configuration is not yet implemented" error

           <jdk>\bin\java -m jdk.hotspot.agent/sun.jvm.hotspot.tools.JStack localhost (using same jdk as the debugee)

          Attaching to remote server localhost, please wait...

          Debugger attached successfully.

          Server compiler detected.

           JVM version is 11-ea+22

           remote configuration is not yet implemented

3.  Doc changes JDK 10 onwards as sa-jdi.jar has been removed.  This includes code samples.

I will open bugs for all of these.

Thanks,

Sharath

*From:*Krystal Mok [mailto:rednaxel...@gmail.com]
*Sent:* Tuesday, August 21, 2018 4:18 PM
*To:* Egor Ushakov
*Cc:* Sharath Ballal; David Holmes; serviceability-dev@openjdk.java.net serviceability-dev@openjdk.java.net
*Subject:* Re: SA Debug attach to another jvm version possible?

You're probably looking for <javahome>/jdk.hotspot.agent.jmod ?

- Kris

On Tue, Aug 21, 2018 at 3:18 AM, Egor Ushakov <egor.usha...@jetbrains.com <mailto:egor.usha...@jetbrains.com>> wrote:

    Thank you all! It is much better now.

    Related question: documentation for java 10
    
https://docs.oracle.com/javase/10/docs/specs/jpda/conninv.html#sa-pid-attaching-connector
    still states that the debug server should be launched with
    sa-jdi.jar in classpath, though there's no such jar in the jdk any
    more.
    java \
        -classpath ${JAVA_HOME}/lib/sa-jdi.jar \
        sun.jvm.hotspot.jdi.SADebugServer
    How should it be launched on jdk 9, 10?

    Thanks,
    Egor



    On 21-Aug-18 11:55, Sharath Ballal wrote:

        Hi David,

        I opened https://bugs.openjdk.java.net/browse/JDK-8209781 for it.

        Thanks,
        Sharath


        -----Original Message-----
        From: David Holmes
        Sent: Tuesday, August 21, 2018 7:47 AM
        To: Sharath Ballal; Egor Ushakov;
        serviceability-dev@openjdk.java.net
        <mailto:serviceability-dev@openjdk.java.net>
        serviceability-dev@openjdk.java.net
        <mailto:serviceability-dev@openjdk.java.net>
        Subject: Re: SA Debug attach to another jvm version possible?

        Hi Sharath,

        On 21/08/2018 3:07 AM, Sharath Ballal wrote:

            Hello Egor,

            By default, SA checks for the exact match of the version
            between the
            debugger and the debuggee.  If you

        In that case we need to fix the referenced documentation that
        states otherwise.

        Cheers,
        David

        want SA to ignore the version, you need to provide the
        "-Dsun.jvm.hotspot.runtime.VM.disableVersionCheck" option to
        the java launcher from the command line.  This is the case
        even if you are not using the debug server.  However since
        'jstack' and similar tools don’t take the "-D" option of java,
        you can invoke it as follows:

            java  -cp <jdk>/lib/sa-jdi.jar
             -Dsun.jvm.hotspot.runtime.VM.disableVersionCheck
             sun.jvm.hotspot.tools.JStack   localhost

            If you invoke the SA tools with this option, you will get
            a warning that the version check has been disabled.

            Example:
            $ <jdk>/bin/java -cp <jdk>/lib/sa-jdi.jar
            -Dsun.jvm.hotspot.runtime.VM.disableVersionCheck
            sun.jvm.hotspot.tools.JStack localhost Attaching to remote
            server localhost, please wait...
            WARNING: You have disabled SA and VM version check. You
            may be using incompatible version of SA and you may see
            unexpected results.
            Debugger attached successfully.
            Server compiler detected.
            JVM version is 25.121-b13
            Deadlock Detection:

            No deadlocks found.

            Thread t@ 2804: (state = BLOCKED)


            Thread t@ 2803: (state = BLOCKED)
               - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
               - java.lang.ref.ReferenceQueue.remove(long) @bci=59,
            line=143 (Interpreted frame)
               - java.lang.ref.ReferenceQueue.remove() @bci=2,
            line=164 (Interpreted frame)
               - java.lang.ref.Finalizer$FinalizerThread.run()
            @bci=36, line=209
            (Interpreted frame)


            Thread t@ 2802: (state = BLOCKED)
               - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
               - java.lang.Object.wait() @bci=2, line=502 (Interpreted
            frame)
               - java.lang.ref.Reference.tryHandlePending(boolean)
            @bci=54, line=191 (Interpreted frame)
               - java.lang.ref.Reference$ReferenceHandler.run()
            @bci=1, line=153
            (Interpreted frame)


            Thread t@ 2798: (state = BLOCKED)
               - java.lang.Thread.sleep(long) @bci=0 (Interpreted frame)
               - HelloWorld.main(java.lang.String[]) @bci=72, line=15
            (Interpreted
            frame)


            Hope this helps.

            Thanks,
            Sharath


            -----Original Message-----
            From: Egor Ushakov [mailto:egor.usha...@jetbrains.com
            <mailto:egor.usha...@jetbrains.com>]
            Sent: Monday, August 20, 2018 3:42 PM
            To: serviceability-dev@openjdk.java.net
            <mailto:serviceability-dev@openjdk.java.net>
            serviceability-dev@openjdk.java.net
            <mailto:serviceability-dev@openjdk.java.net>
            Subject: SA Debug attach to another jvm version possible?

            Hi all,

            documentation for SA Debug Server Attaching Connector here:
            
https://docs.oracle.com/javase/8/docs/technotes/guides/jpda/conninv.ht
            ml#Connectors states that the SADebugServer has to run on
            the same vm
            version as the debugee process, but "the debugger does not
            have to be the same bit size and version."
            However any attempts to connect from another version fail
            with sun.jvm.hotspot.runtime.VMVersionMismatchException.

            Please help, what do I do wrong (locally for simplicity):
            - start the debugee process with jdk1.8.0_162  - get the PID
            - start "jdk1.8.0_162\bin>jsadebugd.exe PID" - all starts well
            - trying to attach jstack, jdb or whatever from another
            version:
            jdk1.8.0_152\bin>jstack localhost
            Attaching to remote server localhost, please wait...
            Error attaching to remote server:
            sun.jvm.hotspot.runtime.VMVersionMismatchException:
            Supported versions
            are 25.152-b16. Target VM is 25.162-b12
            sun.jvm.hotspot.debugger.DebuggerException:
            sun.jvm.hotspot.runtime.VMVersionMismatchException:
            Supported versions
            are 25.152-b16. Target VM is 25.162-b12

            jdk1.8.0_152\bin>jdb -connect
            
"sun.jvm.hotspot.jdi.SADebugServerAttachingConnector:debugServerName=localhost"
            java.io.IOException
                       at
            
sun.jvm.hotspot.jdi.SADebugServerAttachingConnector.attach(SADebugServerAttachingConnector.java:106)
                       at
            com.sun.tools.example.debug.tt
            
<http://com.sun.tools.example.debug.tt>y.VMConnection.attachTarget(VMConnection.java:519)
                       at
            com.sun.tools.example.debug.tt
            
<http://com.sun.tools.example.debug.tt>y.VMConnection.open(VMConnection.java:328)
                       at com.sun.tools.example.debug.tt
            <http://com.sun.tools.example.debug.tt>y.Env.init(Env.java:63)
                       at com.sun.tools.example.debug.tt
            <http://com.sun.tools.example.debug.tt>y.TTY.main(TTY.java:1082)
            Caused by: java.lang.reflect.InvocationTargetException
                       at
            sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                       at
            
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                       at
            
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                       at java.lang.reflect.Method.invoke(Method.java:498)
                       at
            
sun.jvm.hotspot.jdi.SADebugServerAttachingConnector.createVirtualMachine(SADebugServerAttachingConnector.java:72)
                       at
            
sun.jvm.hotspot.jdi.SADebugServerAttachingConnector.attach(SADebugServerAttachingConnector.java:91)
                       ... 4 more
            Caused by: sun.jvm.hotspot.debugger.DebuggerException:
            sun.jvm.hotspot.runtime.VMVersionMismatchException:
            Supported versions are 25.152-b16. Target VM is 25.162-b12
                       at
            sun.jvm.hotspot.HotSpotAgent.setupVM(HotSpotAgent.java:435)
                       at
            sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:305)
                       at
            sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:183)
                       at
            
sun.jvm.hotspot.jdi.VirtualMachineImpl.createVirtualMachineForServer(VirtualMachineImpl.java:241)
                       ... 10 more
            Caused by:
            sun.jvm.hotspot.runtime.VMVersionMismatchException:
            Supported versions are 25.152-b16. Target VM is 25.162-b12
                       at
            sun.jvm.hotspot.runtime.VM.checkVMVersion(VM.java:227)
                       at sun.jvm.hotspot.runtime.VM.<init>(VM.java:294)
                       at
            sun.jvm.hotspot.runtime.VM.initialize(VM.java:370)
                       at
            sun.jvm.hotspot.HotSpotAgent.setupVM(HotSpotAgent.java:431)
                       ... 13 more

            Thanks!

            --
            Egor Ushakov
            Software Developer
            JetBrains
            http://www.jetbrains.com
            The Drive to Develop


-- Egor Ushakov
    Software Developer
    JetBrains
    http://www.jetbrains.com
    The Drive to Develop


--
Egor Ushakov
Software Developer
JetBrains
http://www.jetbrains.com
The Drive to Develop

Reply via email to