// security check to see whether the caller can perform attach private void checkProcessAttach(int pid) { SecurityManager sm = System.getSecurityManager(); if (sm != null) { String os = System.getProperty("os.name"); try { // Whether the caller can perform link against SA native library? checkNativeLink(sm, os); if (os.equals("SunOS") || os.equals("Linux")) { // Whether the caller can read /proc/<pid> file? sm.checkRead("/proc/" + pid); } } catch (SecurityException se) { throw new SecurityException("permission denied to attach to " + pid); } } }
/* We look for System property sun.jvm.hotspot.jdi.<vm version>. * This property should have the value of JDK HOME directory for * the given <vm version>. */ private static String getSAClassPathForVM(String vmVersion) { final String prefix = "sun.jvm.hotspot.jdi."; // look for exact match of VM version String jvmHome = System.getProperty(prefix + vmVersion); if (DEBUG) { System.out.println("looking for System property " + prefix + vmVersion); } if (jvmHome == null) { // omit chars after first '-' in VM version and try // for example, in '1.5.0-b55' we take '1.5.0' int index = vmVersion.indexOf('-'); if (index != -1) { vmVersion = vmVersion.substring(0, index); if (DEBUG) { System.out.println("looking for System property " + prefix + vmVersion); } jvmHome = System.getProperty(prefix + vmVersion); } if (jvmHome == null) { // System property is not set if (DEBUG) { System.out.println("can't locate JDK home for " + vmVersion); } return null; } } if (DEBUG) { System.out.println("JDK home for " + vmVersion + " is " + jvmHome); } // sa-jdi is in $JDK_HOME/lib directory StringBuffer buf = new StringBuffer(); buf.append(jvmHome); buf.append(File.separatorChar); buf.append("lib"); buf.append(File.separatorChar); buf.append("sa-jdi.jar"); return buf.toString(); }
protected String[] getMachineParams() { ArrayList<String> params = new ArrayList<String>(); // params.add("-Xint"); // interpreted mode // params.add("-Xprof"); // profiler // params.add("-Xaprof"); // allocation profiler // params.add("-Xrunhprof:cpu=samples"); // old-style profiler // TODO change this to use run.args = true, run.args.0, run.args.1, etc. // so that spaces can be included in the arg names String options = Preferences.get("run.options"); if (options.length() > 0) { String pieces[] = PApplet.split(options, ' '); for (int i = 0; i < pieces.length; i++) { String p = pieces[i].trim(); if (p.length() > 0) { params.add(p); } } } // params.add("-Djava.ext.dirs=nuffing"); if (Preferences.getBoolean("run.options.memory")) { params.add("-Xms" + Preferences.get("run.options.memory.initial") + "m"); params.add("-Xmx" + Preferences.get("run.options.memory.maximum") + "m"); } if (Base.isMacOS()) { params.add("-Xdock:name=" + build.getSketchClassName()); // params.add("-Dcom.apple.mrj.application.apple.menu.about.name=" + // sketch.getMainClassName()); } // sketch.libraryPath might be "" // librariesClassPath will always have sep char prepended params.add( "-Djava.library.path=" + build.getJavaLibraryPath() + File.pathSeparator + System.getProperty("java.library.path")); params.add("-cp"); params.add(build.getClassPath()); // params.add(sketch.getClassPath() + // File.pathSeparator + // Base.librariesClassPath); // enable assertions // http://dev.processing.org/bugs/show_bug.cgi?id=1188 params.add("-ea"); // PApplet.println(PApplet.split(sketch.classPath, ':')); String outgoing[] = new String[params.size()]; params.toArray(outgoing); // PApplet.println(outgoing); // PApplet.println(PApplet.split(outgoing[0], ":")); // PApplet.println(); // PApplet.println("class path"); // PApplet.println(PApplet.split(outgoing[2], ":")); return outgoing; // return (String[]) params.toArray(); // System.out.println("sketch class path"); // PApplet.println(PApplet.split(sketch.classPath, ';')); // System.out.println(); // System.out.println("libraries class path"); // PApplet.println(PApplet.split(Base.librariesClassPath, ';')); // System.out.println(); }
static { myLoader = ConnectorImpl.class.getClassLoader(); freeVMClasses = new ArrayList(0); DEBUG = System.getProperty("sun.jvm.hotspot.jdi.ConnectorImpl.DEBUG") != null; }