/* * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions.
*/
/* * @test * @bug 8219143 * @summary Tests that using the "stop in" threadid option will properly cause the * breakpoint to only be triggered when hit in the specified thread. * * @library /test/lib * @run compile -g JdbStopThreadidTest.java * @run main/othervm JdbStopThreadidTest
*/
synchronized (lockObj) {
myThread1.start();
myThread2.start();
myThread3.start(); // Wait for all threads to have started. Note they all block on lockObj after starting. while (!myThread1.started || !myThread2.started || !myThread3.started) { try { Thread.sleep(50);
} catch (InterruptedException e) {
}
} // Stop here so the test can setup the breakpoint in MYTHREAD-2
brkMethod();
}
// Wait for all threads to finish before exiting try {
myThread1.join();
myThread2.join();
myThread3.join();
} catch (InterruptedException e) {
}
}
// Find the threadid for MYTHREAD-2 in the "threads" command output
String output = jdb.getJdbOutput();
Matcher m = threadidPattern.matcher(output);
String threadid = null; if (m.find()) {
threadid = m.group(1);
} else { thrownew RuntimeException("FAILED: Did not match threadid pattern.");
}
// Setup a breakpoint in MYTHREAD-2.
jdb.command(JdbCommand.stopInThreadid(DEBUGGEE_THREAD_CLASS, "brkMethod", threadid));
// Continue until MYTHREAD-2 breakpoint is hit. If we hit any other breakpoint before // then (we aren't suppose to), then this test will fail.
jdb.command(JdbCommand.cont().waitForPrompt("Breakpoint hit: \"thread=MYTHREAD-2\", \\S+MyThread.brkMethod", true)); // Continue until the application exits. Once again, hitting a breakpoint will cause // a failure because we are not suppose to hit one.
jdb.contToExit(1); new OutputAnalyzer(getJdbOutput()).shouldContain(Jdb.APPLICATION_EXIT);
}
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.