Merge "Introduce DEBUG_JAVA_DEBUGGABLE."
This commit is contained in:
@@ -352,8 +352,8 @@ public class ZygoteProcess {
|
||||
if ((debugFlags & Zygote.DEBUG_ENABLE_SAFEMODE) != 0) {
|
||||
argsForZygote.add("--enable-safemode");
|
||||
}
|
||||
if ((debugFlags & Zygote.DEBUG_ENABLE_DEBUGGER) != 0) {
|
||||
argsForZygote.add("--enable-debugger");
|
||||
if ((debugFlags & Zygote.DEBUG_ENABLE_JDWP) != 0) {
|
||||
argsForZygote.add("--enable-jdwp");
|
||||
}
|
||||
if ((debugFlags & Zygote.DEBUG_ENABLE_CHECKJNI) != 0) {
|
||||
argsForZygote.add("--enable-checkjni");
|
||||
@@ -367,6 +367,9 @@ public class ZygoteProcess {
|
||||
if ((debugFlags & Zygote.DEBUG_NATIVE_DEBUGGABLE) != 0) {
|
||||
argsForZygote.add("--native-debuggable");
|
||||
}
|
||||
if ((debugFlags & Zygote.DEBUG_JAVA_DEBUGGABLE) != 0) {
|
||||
argsForZygote.add("--java-debuggable");
|
||||
}
|
||||
if ((debugFlags & Zygote.DEBUG_ENABLE_ASSERT) != 0) {
|
||||
argsForZygote.add("--enable-assert");
|
||||
}
|
||||
@@ -379,9 +382,6 @@ public class ZygoteProcess {
|
||||
}
|
||||
argsForZygote.add("--target-sdk-version=" + targetSdkVersion);
|
||||
|
||||
//TODO optionally enable debuger
|
||||
//argsForZygote.add("--enable-debugger");
|
||||
|
||||
// --setgroups is a comma-separated list
|
||||
if (gids != null && gids.length > 0) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
@@ -33,7 +33,7 @@ public final class Zygote {
|
||||
*/
|
||||
|
||||
/** enable debugging over JDWP */
|
||||
public static final int DEBUG_ENABLE_DEBUGGER = 1;
|
||||
public static final int DEBUG_ENABLE_JDWP = 1;
|
||||
/** enable JNI checks */
|
||||
public static final int DEBUG_ENABLE_CHECKJNI = 1 << 1;
|
||||
/** enable Java programming language "assert" statements */
|
||||
@@ -46,8 +46,10 @@ public final class Zygote {
|
||||
public static final int DEBUG_GENERATE_DEBUG_INFO = 1 << 5;
|
||||
/** Always use JIT-ed code. */
|
||||
public static final int DEBUG_ALWAYS_JIT = 1 << 6;
|
||||
/** Make the code debuggable with turning off some optimizations. */
|
||||
/** Make the code native debuggable by turning off some optimizations. */
|
||||
public static final int DEBUG_NATIVE_DEBUGGABLE = 1 << 7;
|
||||
/** Make the code Java debuggable by turning off some optimizations. */
|
||||
public static final int DEBUG_JAVA_DEBUGGABLE = 1 << 8;
|
||||
|
||||
/** No external storage should be mounted. */
|
||||
public static final int MOUNT_EXTERNAL_NONE = 0;
|
||||
|
||||
@@ -336,8 +336,9 @@ class ZygoteConnection {
|
||||
int[] gids;
|
||||
|
||||
/**
|
||||
* From --enable-debugger, --enable-checkjni, --enable-assert,
|
||||
* --enable-safemode, --generate-debug-info and --enable-jni-logging.
|
||||
* From --enable-jdwp, --enable-checkjni, --enable-assert,
|
||||
* --enable-safemode, --generate-debug-info, --enable-jni-logging,
|
||||
* --java-debuggable, and --native-debuggable.
|
||||
*/
|
||||
int debugFlags;
|
||||
|
||||
@@ -447,8 +448,8 @@ class ZygoteConnection {
|
||||
targetSdkVersionSpecified = true;
|
||||
targetSdkVersion = Integer.parseInt(
|
||||
arg.substring(arg.indexOf('=') + 1));
|
||||
} else if (arg.equals("--enable-debugger")) {
|
||||
debugFlags |= Zygote.DEBUG_ENABLE_DEBUGGER;
|
||||
} else if (arg.equals("--enable-jdwp")) {
|
||||
debugFlags |= Zygote.DEBUG_ENABLE_JDWP;
|
||||
} else if (arg.equals("--enable-safemode")) {
|
||||
debugFlags |= Zygote.DEBUG_ENABLE_SAFEMODE;
|
||||
} else if (arg.equals("--enable-checkjni")) {
|
||||
@@ -459,6 +460,8 @@ class ZygoteConnection {
|
||||
debugFlags |= Zygote.DEBUG_ALWAYS_JIT;
|
||||
} else if (arg.equals("--native-debuggable")) {
|
||||
debugFlags |= Zygote.DEBUG_NATIVE_DEBUGGABLE;
|
||||
} else if (arg.equals("--java-debuggable")) {
|
||||
debugFlags |= Zygote.DEBUG_JAVA_DEBUGGABLE;
|
||||
} else if (arg.equals("--enable-jni-logging")) {
|
||||
debugFlags |= Zygote.DEBUG_ENABLE_JNI_LOGGING;
|
||||
} else if (arg.equals("--enable-assert")) {
|
||||
@@ -670,14 +673,14 @@ class ZygoteConnection {
|
||||
* Applies debugger system properties to the zygote arguments.
|
||||
*
|
||||
* If "ro.debuggable" is "1", all apps are debuggable. Otherwise,
|
||||
* the debugger state is specified via the "--enable-debugger" flag
|
||||
* the debugger state is specified via the "--enable-jdwp" flag
|
||||
* in the spawn request.
|
||||
*
|
||||
* @param args non-null; zygote spawner args
|
||||
*/
|
||||
public static void applyDebuggerSystemProperty(Arguments args) {
|
||||
if (RoSystemProperties.DEBUGGABLE) {
|
||||
args.debugFlags |= Zygote.DEBUG_ENABLE_DEBUGGER;
|
||||
args.debugFlags |= Zygote.DEBUG_ENABLE_JDWP;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -699,7 +702,7 @@ class ZygoteConnection {
|
||||
int peerUid = peer.getUid();
|
||||
|
||||
if (args.invokeWith != null && peerUid != 0 &&
|
||||
(args.debugFlags & Zygote.DEBUG_ENABLE_DEBUGGER) == 0) {
|
||||
(args.debugFlags & Zygote.DEBUG_ENABLE_JDWP) == 0) {
|
||||
throw new ZygoteSecurityException("Peer is permitted to specify an"
|
||||
+ "explicit invoke-with wrapper command only for debuggable"
|
||||
+ "applications.");
|
||||
|
||||
@@ -3753,7 +3753,8 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
}
|
||||
int debugFlags = 0;
|
||||
if ((app.info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
|
||||
debugFlags |= Zygote.DEBUG_ENABLE_DEBUGGER;
|
||||
debugFlags |= Zygote.DEBUG_ENABLE_JDWP;
|
||||
debugFlags |= Zygote.DEBUG_JAVA_DEBUGGABLE;
|
||||
// Also turn on CheckJNI for debuggable apps. It's quite
|
||||
// awkward to turn on otherwise.
|
||||
debugFlags |= Zygote.DEBUG_ENABLE_CHECKJNI;
|
||||
|
||||
Reference in New Issue
Block a user