Merge "Allow to attach jvmti agents from inside of process"

This commit is contained in:
Treehugger Robot
2017-11-06 20:34:34 +00:00
committed by Gerrit Code Review
4 changed files with 26 additions and 0 deletions

View File

@@ -30727,6 +30727,7 @@ package android.os {
} }
public final class Debug { public final class Debug {
method public static void attachJvmtiAgent(java.lang.String, java.lang.String) throws java.io.IOException;
method public static deprecated void changeDebugPort(int); method public static deprecated void changeDebugPort(int);
method public static void dumpHprofData(java.lang.String) throws java.io.IOException; method public static void dumpHprofData(java.lang.String) throws java.io.IOException;
method public static boolean dumpService(java.lang.String, java.io.FileDescriptor, java.lang.String[]); method public static boolean dumpService(java.lang.String, java.io.FileDescriptor, java.lang.String[]);

View File

@@ -33450,6 +33450,7 @@ package android.os {
} }
public final class Debug { public final class Debug {
method public static void attachJvmtiAgent(java.lang.String, java.lang.String) throws java.io.IOException;
method public static deprecated void changeDebugPort(int); method public static deprecated void changeDebugPort(int);
method public static void dumpHprofData(java.lang.String) throws java.io.IOException; method public static void dumpHprofData(java.lang.String) throws java.io.IOException;
method public static boolean dumpService(java.lang.String, java.io.FileDescriptor, java.lang.String[]); method public static boolean dumpService(java.lang.String, java.io.FileDescriptor, java.lang.String[]);

View File

@@ -30837,6 +30837,7 @@ package android.os {
} }
public final class Debug { public final class Debug {
method public static void attachJvmtiAgent(java.lang.String, java.lang.String) throws java.io.IOException;
method public static deprecated void changeDebugPort(int); method public static deprecated void changeDebugPort(int);
method public static void dumpHprofData(java.lang.String) throws java.io.IOException; method public static void dumpHprofData(java.lang.String) throws java.io.IOException;
method public static boolean dumpService(java.lang.String, java.io.FileDescriptor, java.lang.String[]); method public static boolean dumpService(java.lang.String, java.io.FileDescriptor, java.lang.String[]);

View File

@@ -16,11 +16,14 @@
package android.os; package android.os;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.AppGlobals; import android.app.AppGlobals;
import android.content.Context; import android.content.Context;
import android.util.Log; import android.util.Log;
import com.android.internal.util.FastPrintWriter; import com.android.internal.util.FastPrintWriter;
import com.android.internal.util.Preconditions;
import com.android.internal.util.TypedProperties; import com.android.internal.util.TypedProperties;
import dalvik.system.VMDebug; import dalvik.system.VMDebug;
@@ -2336,4 +2339,24 @@ public final class Debug
public static String getCaller() { public static String getCaller() {
return getCaller(Thread.currentThread().getStackTrace(), 0); return getCaller(Thread.currentThread().getStackTrace(), 0);
} }
/**
* Attach a library as a jvmti agent to the current runtime.
*
* @param library library containing the agent
* @param options options passed to the agent
*
* @throws IOException If the agent could not be attached
*/
public static void attachJvmtiAgent(@NonNull String library, @Nullable String options)
throws IOException {
Preconditions.checkNotNull(library);
Preconditions.checkArgument(!library.contains("="));
if (options == null) {
VMDebug.attachAgent(library);
} else {
VMDebug.attachAgent(library + "=" + options);
}
}
} }