From fffb273affa011d1d062487f91aa4b3db8a029aa Mon Sep 17 00:00:00 2001 From: Alex Light Date: Mon, 20 Nov 2017 13:01:01 -0800 Subject: [PATCH] Add support for selecting alternate JDWP implementations Change the '-Xagentlib:jdwp=...' option to instead use the new '-XjdwpOptions:...' syntax and remove the explicit transport-lib. Add a '-XjdwpProvider:...' option. Set it to 'default' by default and get its value from the 'dalvik.vm.jdwp-provider' property. Test: Boots. Can debug apps Test: Set dalvik.vm.jdwp-provider=adbconnection, stop, start, debug Bug: 62821960 Change-Id: I1605030b94b38676c18885fcf2fa3490bccd3e0d --- core/jni/AndroidRuntime.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index 90598626cbe83..dc29d4ca8d8de 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -643,6 +643,7 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) char methodTraceFileBuf[sizeof("-Xmethod-trace-file:") + PROPERTY_VALUE_MAX]; char methodTraceFileSizeBuf[sizeof("-Xmethod-trace-file-size:") + PROPERTY_VALUE_MAX]; std::string fingerprintBuf; + char jdwpProviderBuf[sizeof("-XjdwpProvider:") - 1 + PROPERTY_VALUE_MAX]; bool checkJni = false; property_get("dalvik.vm.checkjni", propBuf, ""); @@ -765,9 +766,15 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool 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"); + addOption("-XjdwpOptions:suspend=n,server=y"); } + // Set the JDWP provider. By default let the runtime choose. + parseRuntimeOption("dalvik.vm.jdwp-provider", + jdwpProviderBuf, + "-XjdwpProvider:", + "default"); + parseRuntimeOption("dalvik.vm.lockprof.threshold", lockProfThresholdBuf, "-Xlockprofthreshold:");