Trace.java revision 4378
2362N/A * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 2362N/A * published by the Free Software Foundation. Oracle designates this 0N/A * particular file as subject to the "Classpath" exception as provided 2362N/A * by Oracle in the LICENSE file that accompanied this code. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2362N/A * or visit www.oracle.com if you need additional information or have any 4378N/A * This source code is provided to illustrate the usage of a given feature 4378N/A * or technique and has been deliberately simplified. Additional steps 4378N/A * required for a production-quality application, such as security checks, 4378N/A * input validation and proper error handling, might not be present in 0N/A * This program traces the execution of another program. 0N/A * See "java Trace -help". 0N/A * It is a simple example of the use of the Java Debug Interface. 0N/A * @author Robert Field 0N/A // Running remote VM 0N/A // Thread transferring remote error stream to our error stream 0N/A // Thread transferring remote output stream to our output stream 0N/A // Mode for tracing the Trace program (default= 0 off) 0N/A // Do we want to watch assignments to fields 0N/A // Class patterns for which we don't want events 0N/A * Parse the command line arguments. 0N/A * Generate the trace. 0N/A * Generate the trace. 0N/A * Enable events, start thread to display events, 0N/A * start threads to forward remote error and output streams, 0N/A * resume the remote VM, wait for the final event, and shutdown. 0N/A // Shutdown begins when event thread terminates 0N/A // we don't interrupt 0N/A * Forward target's output and error. 0N/A throw new Error(
"Target VM failed to initialize: " +
0N/A // Copy target's output and error to our output and error. 0N/A * Find a com.sun.jdi.CommandLineLaunch connector 0N/A throw new Error(
"No launching connector");
0N/A * Return the launching connector's arguments. 0N/A throw new Error(
"Bad launching connector");
0N/A // We need a VM that supports watchpoints 0N/A throw new Error(
"Bad launching connector");
0N/A * Print command line usage help 0N/A" -output <filename> Output trace to <filename>");
0N/A" -all Include system classes in output");
0N/A" -help Print this help message");