diff options
author | Sebastien Hertz <shertz@google.com> | 2015-08-21 07:01:02 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-08-21 07:01:02 +0000 |
commit | 445ab7fa43f32ac1a256b15f5ab2bd619e9711e4 (patch) | |
tree | 754a3962c08f532c0408b1e99ef253b0bdde608f | |
parent | 7f63ef380ff8c95ea43edd832a7b986ad362e7cf (diff) | |
parent | ff8dc21278b19b22ed8dc9f9475850838336d351 (diff) | |
download | frameworks_base-445ab7fa43f32ac1a256b15f5ab2bd619e9711e4.zip frameworks_base-445ab7fa43f32ac1a256b15f5ab2bd619e9711e4.tar.gz frameworks_base-445ab7fa43f32ac1a256b15f5ab2bd619e9711e4.tar.bz2 |
am ff8dc212: Allow debugging only for apps forked from zygote
* commit 'ff8dc21278b19b22ed8dc9f9475850838336d351':
Allow debugging only for apps forked from zygote
-rw-r--r-- | cmds/app_process/app_main.cpp | 4 | ||||
-rw-r--r-- | core/jni/AndroidRuntime.cpp | 16 | ||||
-rw-r--r-- | include/android_runtime/AndroidRuntime.h | 4 |
3 files changed, 14 insertions, 10 deletions
diff --git a/cmds/app_process/app_main.cpp b/cmds/app_process/app_main.cpp index 1bb28c3..91cec19 100644 --- a/cmds/app_process/app_main.cpp +++ b/cmds/app_process/app_main.cpp @@ -304,9 +304,9 @@ int main(int argc, char* const argv[]) } if (zygote) { - runtime.start("com.android.internal.os.ZygoteInit", args); + runtime.start("com.android.internal.os.ZygoteInit", args, zygote); } else if (className) { - runtime.start("com.android.internal.os.RuntimeInit", args); + runtime.start("com.android.internal.os.RuntimeInit", args, zygote); } else { fprintf(stderr, "Error: no class name or --zygote supplied.\n"); app_usage(); diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index 3275730..c946432 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -528,7 +528,7 @@ bool AndroidRuntime::parseCompilerRuntimeOption(const char* property, * * Returns 0 on success. */ -int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) +int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) { int result = -1; JavaVMInitArgs initArgs; @@ -733,9 +733,13 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) } } - /* enable debugging; set suspend=y to pause during VM init */ - /* use android ADB transport */ - addOption("-agentlib:jdwp=transport=dt_android_adb,suspend=n,server=y"); + /* + * Enable debugging only for apps forked from zygote. + * Set suspend=y to pause during VM init and use android ADB transport. + */ + if (zygote) { + addOption("-agentlib:jdwp=transport=dt_android_adb,suspend=n,server=y"); + } parseRuntimeOption("dalvik.vm.lockprof.threshold", lockProfThresholdBuf, @@ -943,7 +947,7 @@ jstring AndroidRuntime::NewStringLatin1(JNIEnv* env, const char* bytes) { * Passes the main function two arguments, the class name and the specified * options string. */ -void AndroidRuntime::start(const char* className, const Vector<String8>& options) +void AndroidRuntime::start(const char* className, const Vector<String8>& options, bool zygote) { ALOGD("\n>>>>>> AndroidRuntime START %s <<<<<<\n", className != NULL ? className : "(unknown)"); @@ -979,7 +983,7 @@ void AndroidRuntime::start(const char* className, const Vector<String8>& options JniInvocation jni_invocation; jni_invocation.Init(NULL); JNIEnv* env; - if (startVm(&mJavaVM, &env) != 0) { + if (startVm(&mJavaVM, &env, zygote) != 0) { return; } onVmCreated(env); diff --git a/include/android_runtime/AndroidRuntime.h b/include/android_runtime/AndroidRuntime.h index fc33b7e..9a3b990 100644 --- a/include/android_runtime/AndroidRuntime.h +++ b/include/android_runtime/AndroidRuntime.h @@ -64,7 +64,7 @@ public: */ static jclass findClass(JNIEnv* env, const char* className); - void start(const char *classname, const Vector<String8>& options); + void start(const char *classname, const Vector<String8>& options, bool zygote); void exit(int code); @@ -131,7 +131,7 @@ private: const char* runtimeArg, const char* quotingArg); void parseExtraOpts(char* extraOptsBuf, const char* quotingArg); - int startVm(JavaVM** pJavaVM, JNIEnv** pEnv); + int startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote); Vector<JavaVMOption> mOptions; bool mExitWithoutCleanup; |