Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 55f86b18 authored by Sebastien Hertz's avatar Sebastien Hertz Committed by Android Git Automerger
Browse files

am 9e7a0ddb: am 18089ceb: Allow debugging only for apps forked from zygote DO NOT MERGE

* commit '9e7a0ddb':
  Allow debugging only for apps forked from zygote DO NOT MERGE
parents f3dbb57e 9e7a0ddb
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -192,14 +192,14 @@ int main(int argc, char* const argv[])

    if (zygote) {
        runtime.start("com.android.internal.os.ZygoteInit",
                startSystemServer ? "start-system-server" : "");
                startSystemServer ? "start-system-server" : "", zygote);
    } else if (className) {
        // Remainder of args get passed to startup class main()
        runtime.mClassName = className;
        runtime.mArgC = argc - i;
        runtime.mArgV = argv + i;
        runtime.start("com.android.internal.os.RuntimeInit",
                application ? "application" : "tool");
                application ? "application" : "tool", zygote);
    } else {
        fprintf(stderr, "Error: no class name or --zygote supplied.\n");
        app_usage();
+12 −8
Original line number Diff line number Diff line
@@ -433,7 +433,7 @@ void AndroidRuntime::parseExtraOpts(char* extraOptsBuf)
 *
 * 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;
@@ -642,11 +642,15 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
        }
    }

    /* enable debugging; set suspend=y to pause during VM init */
    /* use android ADB transport */
    /*
     * Enable debugging only for apps forked from zygote.
     * Set suspend=y to pause during VM init and use android ADB transport.
     */
    if (zygote) {
        opt.optionString =
            "-agentlib:jdwp=transport=dt_android_adb,suspend=n,server=y";
        mOptions.add(opt);
    }

    ALOGD("CheckJNI is %s\n", checkJni ? "ON" : "OFF");
    if (checkJni) {
@@ -804,7 +808,7 @@ char* AndroidRuntime::toSlashClassName(const char* className)
 * Passes the main function two arguments, the class name and the specified
 * options string.
 */
void AndroidRuntime::start(const char* className, const char* options)
void AndroidRuntime::start(const char* className, const char* options, bool zygote)
{
    ALOGD("\n>>>>>> AndroidRuntime START %s <<<<<<\n",
            className != NULL ? className : "(unknown)");
@@ -837,7 +841,7 @@ void AndroidRuntime::start(const char* className, const char* options)
    JniInvocation jni_invocation;
    jni_invocation.Init(NULL);
    JNIEnv* env;
    if (startVm(&mJavaVM, &env) != 0) {
    if (startVm(&mJavaVM, &env, zygote) != 0) {
        return;
    }
    onVmCreated(env);
+2 −2
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ public:

    int addVmArguments(int argc, const char* const argv[]);

    void start(const char *classname, const char* options);
    void start(const char *classname, const char* options, bool zygote);

    void exit(int code);

@@ -116,7 +116,7 @@ public:
private:
    static int startReg(JNIEnv* env);
    void parseExtraOpts(char* extraOptsBuf);
    int startVm(JavaVM** pJavaVM, JNIEnv** pEnv);
    int startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote);

    Vector<JavaVMOption> mOptions;
    bool mExitWithoutCleanup;