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

Commit e5527c23 authored by Fabien Sanglard's avatar Fabien Sanglard Committed by Gerrit Code Review
Browse files

Merge "Remove 1.3s "Waiting for Debugger" delay"

parents 71678b8c c947f2cf
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
@@ -981,6 +981,43 @@ public final class Debug
    }


    /**
     * Wait until a debugger attaches. As soon as a debugger attaches,
     * suspend all Java threads and send VM_START (a.k.a VM_INIT)
     * packet.
     *
     * @hide
     */
    public static void suspendAllAndSendVmStart() {
        if (!VMDebug.isDebuggingEnabled()) {
            return;
        }

        // if DDMS is listening, inform them of our plight
        System.out.println("Sending WAIT chunk");
        byte[] data = new byte[] { 0 };     // 0 == "waiting for debugger"
        Chunk waitChunk = new Chunk(ChunkHandler.type("WAIT"), data, 0, 1);
        DdmServer.sendChunk(waitChunk);

        // We must wait until a debugger is connected (debug socket is
        // open and at least one non-DDM JDWP packedt has been received.
        // This guarantees that oj-libjdwp has been attached and that
        // ART's default implementation of suspendAllAndSendVmStart has
        // been replaced with an implementation that will suspendAll and
        // send VM_START.
        System.out.println("Waiting for debugger first packet");
        while (!isDebuggerConnected()) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException ie) {
            }
        }

        System.out.println("Debug.suspendAllAndSentVmStart");
        VMDebug.suspendAllAndSendVmStart();
        System.out.println("Debug.suspendAllAndSendVmStart, resumed");
    }

    /**
     * Wait until a debugger attaches.  As soon as the debugger attaches,
     * this returns, so you will need to place a breakpoint after the