SA Debug attach to another jvm version possible?

Egor Ushakov egor.ushakov at jetbrains.com
Tue Aug 21 11:49:22 UTC 2018


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:rednaxelafx at gmail.com]
> *Sent:* Tuesday, August 21, 2018 4:18 PM
> *To:* Egor Ushakov
> *Cc:* Sharath Ballal; David Holmes; 
> serviceability-dev at openjdk.java.net serviceability-dev at 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.ushakov at jetbrains.com <mailto:egor.ushakov at 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 at openjdk.java.net
>         <mailto:serviceability-dev at openjdk.java.net>
>         serviceability-dev at openjdk.java.net
>         <mailto:serviceability-dev at 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.ushakov at jetbrains.com
>             <mailto:egor.ushakov at jetbrains.com>]
>             Sent: Monday, August 20, 2018 3:42 PM
>             To: serviceability-dev at openjdk.java.net
>             <mailto:serviceability-dev at openjdk.java.net>
>             serviceability-dev at openjdk.java.net
>             <mailto:serviceability-dev at 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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20180821/d0b73d14/attachment-0001.html>


More information about the serviceability-dev mailing list