Proposal: Post debug Java code to target JVM and exec it
David Holmes
david.holmes at oracle.com
Mon Jul 17 05:09:57 UTC 2023
On 17/07/2023 12:21 pm, Yi Yang wrote:
> Actually, this is not a very new and strange idea. I often encounter
> similar needs in actual debugging and troubleshooting. In addition, this
> feature has also been implemented in some external tools
> (https://arthas.aliyun.com/en/doc/ognl.html
> <https://arthas.aliyun.com/en/doc/ognl.html>). It would be very
> convenient for problem diagnosis if JDK natively had this capability
Okay please take this discussion to serviceability-dev - cc'd.
Thanks,
David
> ------------------------------------------------------------------
> From:David Holmes <david.holmes at oracle.com>
> Send Time:2023 Jul. 13 (Thu.) 20:34
> To:"YANG, Yi" <qingfeng.yy at alibaba-inc.com>; jdk-dev
> <jdk-dev at openjdk.org>
> Subject:Re: Proposal: Post debug Java code to target JVM and exec it
>
> On 13/07/2023 8:57 pm, Yi Yang wrote:
> > Proposal: Post debug Java code to target JVM and exec it
> >
> > Hello, I have an early idea to post a piece of Java code to a
> local JVM
> > process via jcmd or jexec, like this:
> >
> > jcmd VM.exec Debug.java
> > jexec Debug.java
> >
> > class Debug {
> > public static void main(){
> > ApplicationProperties c = loadClass("ApplicationProperties");
> > // print static field of running Java program
> > System.out.println(ApplicationProperties.field1);
> > // call static method of running Java program
> > ApplicationProperties.printAll();
> > // ....
> > }
> > }
> >
> > With this approach, we can do some useful things, such as:
> > - Get some runtime data of the program
> > - Troubleshoot Java problems
> > - In rare cases, it can also assist in JVM problem diagnosis
> >
> > To protect the attach listener, we may need to create a new
> ExecThread
> > at JVM startup and execute Debug::main in this thread. Do you
> have any
> > comments on this idea?
>
> So basically you want the ability to ask a running JVM to execute an
> arbitrary piece of java code. That may have some uses but in general
> seems incredibly dangerous - how would you safeguard such a facility?
>
> Cheers,
> David
>
> > Thank you.
More information about the jdk-dev
mailing list