summaryrefslogtreecommitdiff
path: root/core/java/android/os/Debug.java
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2018-01-16 15:11:29 -0800
committerAndreas Gampe <agampe@google.com>2018-01-18 22:02:53 -0800
commit571b700fb6bdb90eed59d16705ef4ae2fb69a9d3 (patch)
treeece227d7f2c2ef69ca797187dde6c8876aa00b82 /core/java/android/os/Debug.java
parent8353a39ecc8e44bb9c084bcaf5ede8469d64d260 (diff)
Debug: Add attachJvmtiAgent with classloader
Add classloader support to android.os.Debug.attachJvmtiAgent. For the original version without a given classloader, look up the application's main classloader. Bug: 65016018 Bug: 70901841 Test: m Test: cts-tradefed run commandAndExit cts-dev Change-Id: I649b6883e05dc2f75073fe1f978423f6a7b880df
Diffstat (limited to 'core/java/android/os/Debug.java')
-rw-r--r--core/java/android/os/Debug.java24
1 files changed, 15 insertions, 9 deletions
diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java
index 2acf36fed85f..c3894c486936 100644
--- a/core/java/android/os/Debug.java
+++ b/core/java/android/os/Debug.java
@@ -1136,7 +1136,7 @@ public final class Debug
int intervalUs) {
VMDebug.startMethodTracing(fixTracePath(tracePath), bufferSize, 0, true, intervalUs);
}
-
+
/**
* Formats name of trace log file for method tracing.
*/
@@ -2352,22 +2352,28 @@ public final class Debug
}
/**
- * Attach a library as a jvmti agent to the current runtime.
+ * Attach a library as a jvmti agent to the current runtime, with the given classloader
+ * determining the library search path.
+ * <p>
+ * Note: agents may only be attached to debuggable apps. Otherwise, this function will
+ * throw a SecurityException.
*
- * @param library library containing the agent
- * @param options options passed to the agent
+ * @param library the library containing the agent.
+ * @param options the options passed to the agent.
+ * @param classLoader the classloader determining the library search path.
*
- * @throws IOException If the agent could not be attached
+ * @throws IOException if the agent could not be attached.
+ * @throws SecurityException if the app is not debuggable.
*/
- public static void attachJvmtiAgent(@NonNull String library, @Nullable String options)
- throws IOException {
+ public static void attachJvmtiAgent(@NonNull String library, @Nullable String options,
+ @Nullable ClassLoader classLoader) throws IOException {
Preconditions.checkNotNull(library);
Preconditions.checkArgument(!library.contains("="));
if (options == null) {
- VMDebug.attachAgent(library);
+ VMDebug.attachAgent(library, classLoader);
} else {
- VMDebug.attachAgent(library + "=" + options);
+ VMDebug.attachAgent(library + "=" + options, classLoader);
}
}
}