/* * Copyright (c) 1999, 2018, 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.
*/
/* * Note: What seems to be an excessive use of System.xxx.flush(); * is actually necessary to combat lost output on win32 systems. * * @test * @bug 4291701 4376819 4422312 4522770 * @summary Test JIT debugging - * assure that launching on uncaught exception works * * @library /test/lib * * @author Robert Field * @run main/othervm JITDebug
*/
/* * This class implements three separate small programs, each * of which (directly or indirectly) invokes the next. These * programs are: * test launcher - * Runs the debug target. It exists to work around a * bug in the test tools which do not allow quoted spaces * in command lines. It launchs the debug target in * such a way that when it encounters an uncaught exception * it (in turn) will launch the trivial debugger. * debug target - * A one line program which throws an uncaught exception. * trivial debugger - * A debugger which attachs to the debug target and shuts * it down with a zero exit code. * These programs are differentiated by their command line arguments: * test launcher - (no args) * debug target - ("TARGET") * trivial debugger - ("DEBUGGER", host and port)
*/ publicclass JITDebug {
publicstaticvoid main(String[] args) { if (!new JITDebug().parseArgs(args)) { thrownew RuntimeException("Unexpected command line arguments: "
+ args);
}
}
boolean parseArgs(String[] args) { switch (args.length) { case 0:
testLaunch(); returntrue; case 1: if (args[0].equals("TARGET")) {
debugTarget(); returntrue;
} else { returnfalse;
} case 3: if (args[0].equals("DEBUGGER")) { // launched by using "-agentlib:" "launch" sub-option: // The following strings are appended to the string given in this argument (space-delimited). // They can aid the launched debugger in establishing a connection with this VM. // The resulting string is executed. // - The value of the transport sub-option. // - The value of the address sub-option (or the generated address if one is not given)
trivialDebugger(args[1], args[2]); returntrue;
} else { returnfalse;
} default: returnfalse;
}
}
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.