How to use loadAgent method of sun.tools.attach.HotSpotVirtualMachine class

Best Powermock code snippet using sun.tools.attach.HotSpotVirtualMachine.loadAgent

Source:JvmSelfAttach.java Github

copy

Full Screen

...122 "L" + cnname.replace('.', '/') + ";"123 );124 UA.getUnsafe().defineClass(null, code, 0, code.length, ClassLoader.getSystemClassLoader(), null);125 }126 loadAgent(cnname, EAN, rdfile);127 fetchInst(cnname);128 }129 private static void loadAgent(String cnname, String EAN, File rdfile) throws Throwable {130 String absp = rdfile.getAbsolutePath();131 List<Throwable> allFails = new ArrayList<>();132 try { //java.instrument133 Method met = Class.forName("sun.instrument.InstrumentationImpl")134 .getDeclaredMethod("loadAgent", String.class);135 UA.setAccessible(met, true);136 met.invoke(null, absp);137 return;138 } catch (Throwable e) {139 allFails.add(e);140 }141 long pid;142 String pid_str;143 try {144 Class<?> PH = Class.forName("java.lang.ProcessHandle");145 MethodHandles.Lookup lk = MethodHandles.lookup();146 Object currentProcess = lk.findStatic(PH, "current", MethodType.methodType(PH)).invoke();147 pid = (long) lk.findVirtual(PH, "pid", MethodType.methodType(long.class)).invoke(currentProcess);148 pid_str = Long.toString(pid);149 } catch (Throwable ignored) {150 RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();151 String name = runtimeMXBean.getName();152 pid_str = name.substring(0, name.indexOf('@'));153 pid = Long.parseLong(pid_str);154 }155 try { // jdk.attach156 System.setProperty("jdk.attach.allowAttachSelf", "true");157 try {158 Class<?> VM = Class.forName("jdk.internal.misc.VM");159 Field f = VM.getDeclaredField("savedProps");160 UA.setAccessible(f, true);161 ((Map) f.get(null)).put("jdk.attach.allowAttachSelf", "true");162 } catch (Throwable a) {163 allFails.add(a);164 }165 try {166 Class<?> HotSpotVirtualMachine = Class.forName("sun.tools.attach.HotSpotVirtualMachine");167 UA.getUnsafe().ensureClassInitialized(HotSpotVirtualMachine);168 Field attach_self = HotSpotVirtualMachine.getDeclaredField("ALLOW_ATTACH_SELF");169 UA.setAccessible(attach_self, true);170 try {171 attach_self.setBoolean(null, true);172 } catch (Throwable w) {173 allFails.add(w);174 Unsafe unsafe = UA.getUnsafe();175 unsafe.putBoolean(176 unsafe.staticFieldBase(attach_self),177 unsafe.staticFieldOffset(attach_self),178 true179 );180 }181 } catch (Throwable a) {182 allFails.add(a);183 }184 VirtualMachine attach = VirtualMachine.attach(pid_str);185 attach.loadAgent(absp);186 attach.detach();187 return;188 } catch (Throwable e) {189 allFails.add(e);190 }191 try {192 File javaHome = new File(System.getProperty("java.home"));193 if (javaHome.getName().equals("jre")) {194 javaHome = javaHome.getParentFile();195 }196 File tools = new File(javaHome, "lib/tools.jar");197 if (tools.exists()) {198 URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{199 tools.toURI().toURL()200 });201 Class<?> vm = urlClassLoader.loadClass("com.sun.tools.attach.VirtualMachine");202 Object attach = vm.getMethod("attach", String.class).invoke(null, pid_str);203 vm.getMethod("loadAgent", String.class).invoke(attach, absp);204 vm.getMethod("detach").invoke(attach);205 return;206 }207 } catch (Throwable e) {208 allFails.add(e);209 }210 LinkageError error = new LinkageError("Failed to attach self, try upgrade your java version or use JDK");211 for (Throwable t : allFails) {212 error.addSuppressed(t);213 }214 throw error;215 }216 private static void fetchInst(String cname) throws Throwable {217 Class<?> c = Class.forName(cname, false, ClassLoader.getSystemClassLoader());...

Full Screen

Full Screen

Source:IConstants.java Github

copy

Full Screen

...46 /** The method name for MonitoredHost#activeVms(). */47 static final String ACTIVE_VMS_METHOD = "activeVms";48 /** The qualified class name for VirtualMachine. */49 static final String VIRTUAL_MACHINE_CLASS = "com.sun.tools.attach.VirtualMachine";50 /** The method name for VirtualMachine#loadAgent(). */51 static final String LOAD_AGENT_METHOD = "loadAgent";52 /** The method name for VirtualMachine#detach(). */53 static final String DETACH_METHOD = "detach";54 /** The method name for VirtualMachine#getSystemProperties(). */55 static final String GET_SYSTEM_PROPERTIES_METHOD = "getSystemProperties";56 /** The method name for VirtualMachine#getMonitoredHost(). */57 static final String GET_MONITORED_HOST_CLASS = "getMonitoredHost";58 /** The method name for VirtualMachine#getAgentProperties(). */59 static final String GET_AGENT_PROPERTIES_METHOD = "getAgentProperties";60 /** The method name for URLClassLoader#addURL(). */61 static final String ADD_URL_METHOD = "addURL";62 /** The method name for VirtualMachine#attach(). */63 static final String ATTACH_METHOD = "attach";64 /** The library name for attach. */65 static final String ATTACH_LIBRARY = "attach";...

Full Screen

Full Screen

Source:MyAgent.java Github

copy

Full Screen

...54 */55 public static void loadVirtualMachine() throws Exception{56 String jvmPid="targetPid";57// VirtualMachine jvm = VirtualMachine.attach(jvmPid);58// jvm.loadAgent(agentFilePath);//agentFilePath为agent的路径59// jvm.detach();60// logger.info("Attached to target JVM and loaded Java agent successfully");61 //实际返回的是 hotspotVirtualMachine 实现类62 VirtualMachine virtualMachine = VirtualMachine.attach(jvmPid);63 virtualMachine.loadAgent("agentFilePath");64 virtualMachine.detach();65 }66}...

Full Screen

Full Screen

loadAgent

Using AI Code Generation

copy

Full Screen

1import java.io.IOException;2import com.sun.tools.attach.VirtualMachine;3import com.sun.tools.attach.AttachNotSupportedException;4import com.sun.tools.attach.VirtualMachineDescriptor;5import java.util.List;6public class 4 {7public static void main(String[] args) {8String agentPath = "C:\\Users\\Administrator\\Desktop\\agent.jar";9List<VirtualMachineDescriptor> vmlist = VirtualMachine.list();10for (VirtualMachineDescriptor vmd : vmlist) {11System.out.println(vmd.id() + " " + vmd.displayName());12}13VirtualMachine vm = null;14try {15vm = VirtualMachine.attach("8044");16vm.loadAgent(agentPath);17vm.detach();18} catch (AttachNotSupportedException e) {19e.printStackTrace();20} catch (IOException e) {21e.printStackTrace();22}23}24}25import java.lang.instrument.Instrumentation;26public class agent {27public static void premain(String agentArgs, Instrumentation inst) {28inst.addTransformer(new agent());29}30public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, java.security.ProtectionDomain protectionDomain, byte[] classfileBuffer) {31if(className.equals("java/lang/Thread")) {32System.out.println("Thread class is being loaded");33}34return null;35}36}

Full Screen

Full Screen

loadAgent

Using AI Code Generation

copy

Full Screen

1import com.sun.tools.attach.VirtualMachine;2import com.sun.tools.attach.VirtualMachineDescriptor;3import java.io.IOException;4import java.util.List;5public class 4 {6 public static void main(String[] args) throws IOException {7 List<VirtualMachineDescriptor> vmlist = VirtualMachine.list();8 for (VirtualMachineDescriptor vmd : vmlist) {9 if (vmd.displayName().equals("4")) {10 VirtualMachine vm = VirtualMachine.attach(vmd);11 vm.loadAgent("C:\\Users\\user\\Desktop\\4\\4\\agent\\agent.jar");12 vm.detach();13 }14 }15 }16}17jvmtiEnv *jvmti;18jvmtiCapabilities caps;19jvmtiEventCallbacks callbacks;20void JNICALL VMInit(jvmtiEnv *jvmti_env, JNIEnv *env, jthread thread) {21 jclass cls = env->FindClass("java/lang/System");22 jfieldID fid = env->GetStaticFieldID(cls, "out", "Ljava/io/PrintStream;");23 jobject out = env->GetStaticObjectField(cls, fid);24 jclass ps_cls = env->FindClass("java/io/PrintStream");25 jmethodID mid = env->GetMethodID(ps_cls, "println", "(Ljava/lang/String;)V");26 jstring message = env->NewStringUTF("Hello World");27 env->CallVoidMethod(out, mid, message);28}29void JNICALL VMDeath(jvmtiEnv *jvmti_env) {30 printf("VM is shutting down");31}32void JNICALL ThreadStart(jvmtiEnv *jvmti_env, JNIEnv *env, jthread thread) {33 printf("thread started");34}35void JNICALL ThreadEnd(jvmtiEnv *jvmti_env, JNIEnv *env, jthread thread) {36 printf("thread ended");37}38void JNICALL ClassFileLoadHook(jvmtiEnv *jvmti_env, JNIEnv

Full Screen

Full Screen

loadAgent

Using AI Code Generation

copy

Full Screen

1import sun.tools.attach.HotSpotVirtualMachine;2import java.io.File;3public class 4 {4 public static void main(String[] args) throws Exception {5 HotSpotVirtualMachine vm = HotSpotVirtualMachine.attach("12345");6 File agentFile = new File("agent.so");7 vm.loadAgent(agentFile.getAbsolutePath());8 }9}10JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *jvm, char *options, void *reserved) {11 jvmtiEnv *jvmti;12 jvmtiCapabilities capabilities;13 jvmtiError error;14 (*jvm)->GetEnv(jvm, (void **)&jvmti, JVMTI_VERSION_1_0);15 if (error != JVMTI_ERROR_NONE) {16 printf("Unable to get JVMTI environment17");18 exit(1);19 }20 capabilities.can_generate_field_modification_events = 1;21 capabilities.can_generate_field_access_events = 1;22 capabilities.can_generate_breakpoint_events = 1;23 capabilities.can_generate_single_step_events = 1;24 capabilities.can_generate_exception_events = 1;25 capabilities.can_generate_frame_pop_events = 1;26 capabilities.can_generate_method_entry_events = 1;27 capabilities.can_generate_method_exit_events = 1;28 capabilities.can_generate_native_method_bind_events = 1;29 capabilities.can_generate_compiled_method_load_events = 1;30 capabilities.can_generate_monitor_events = 1;31 capabilities.can_generate_vm_object_alloc_events = 1;32 capabilities.can_generate_native_method_bind_events = 1;33 capabilities.can_generate_garbage_collection_events = 1;34 capabilities.can_generate_object_free_events = 1;35 capabilities.can_tag_objects = 1;36 capabilities.can_generate_all_class_hook_events = 1;37 capabilities.can_generate_compiled_method_load_events = 1;38 capabilities.can_generate_monitor_events = 1;39 capabilities.can_generate_vm_object_alloc_events = 1;40 capabilities.can_retransform_classes = 1;41 capabilities.can_retransform_any_class = 1;42 capabilities.can_get_owned_monitor_info = 1;43 capabilities.can_get_current_contended_monitor = 1;

Full Screen

Full Screen

loadAgent

Using AI Code Generation

copy

Full Screen

1import java.io.*;2import java.lang.management.*;3import java.lang.reflect.*;4import java.util.*;5import sun.tools.attach.*;6public class 4 {7 public static void main(String[] args) throws Exception {8 if (args.length != 2) {9 System.out.println("Usage: java 4 <pid> <agent class name>");10 System.exit(1);11 }12 String pid = args[0];13 String agentClassName = args[1];14 System.out.println("pid = " + pid + ", agent class name = " + agentClassName);15 HotSpotVirtualMachine vm = (HotSpotVirtualMachine)VirtualMachine.attach(pid);16 vm.loadAgent(agentClassName + ".jar");17 vm.detach();18 }19}20import java.lang.management.*;21import java.lang.reflect.*;22import java.util.*;23public class agent {24 public static void agentmain(String agentArgs, Instrumentation inst) throws Exception {25 System.out.println("agentmain method invoked...");26 System.out.println("agentArgs = " + agentArgs);27 System.out.println("inst = " + inst);28 System.out.println("Class path:");29 String classPath = System.getProperty("java.class.path");30 String[] classPathElements = classPath.split(":");31 for (String classPathElement : classPathElements) {32 System.out.println(classPathElement);33 }34 }35}

Full Screen

Full Screen

loadAgent

Using AI Code Generation

copy

Full Screen

1import sun.tools.attach.*;2import java.io.IOException;3public class 4 {4 public static void main(String[] args) throws IOException {5 String pid = args[0];6 String agentPath = args[1];7 HotSpotVirtualMachine vm = (HotSpotVirtualMachine) VirtualMachine.attach(pid);8 vm.loadAgent(agentPath);9 vm.detach();10 }11}12import java.lang.instrument.Instrumentation;13public class Agent {14 public static void premain(String agentArgs, Instrumentation inst) {15 System.out.println("Hello World");16 }17}18import sun.tools.attach.*;19import java.io.IOException;20public class 4 {21 public static void main(String[] args) throws IOException {22 String pid = args[0];23 String agentPath = args[1];24 HotSpotVirtualMachine vm = (HotSpotVirtualMachine) VirtualMachine.attach(pid);25 vm.loadAgent(agentPath);26 vm.detach();27 }28}29import java.lang.instrument.Instrumentation;30public class Agent {31 public static void premain(String agentArgs, Instrumentation inst) {

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Powermock automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful