MCPcopy Create free account
hub / github.com/btraceio/btrace / attach

Method attach

integration-tests/src/test/java/tests/RuntimeTest.java:614–724  ·  view source on GitHub ↗
(
      String pid,
      String trace,
      String[] cmdArgs,
      int checkLines,
      StringBuilder stdout,
      StringBuilder stderr)

Source from the content-addressed store, hash-verified

612 }
613
614 private Process attach(
615 String pid,
616 String trace,
617 String[] cmdArgs,
618 int checkLines,
619 StringBuilder stdout,
620 StringBuilder stderr)
621 throws Exception {
622 File traceFile = locateTrace(trace);
623 List<String> argVals =
624 new ArrayList<>(
625 Arrays.asList(
626 javaHome + "/bin/java",
627 "-Dcom.sun.btrace.unsafe=" + isUnsafe,
628 "-Dcom.sun.btrace.debug=" + debugBTrace,
629 "-Dcom.sun.btrace.trackRetransforms=" + trackRetransforms,
630 "-cp",
631 cp,
632 "org.openjdk.btrace.client.Main",
633 "-cp",
634 eventsClassPath,
635 "-d",
636 Paths.get(System.getProperty("java.io.tmpdir"), "btrace-test").toString(),
637 "-pd",
638 traceFile.getParentFile().getAbsolutePath()));
639 if (debugBTrace) {
640 argVals.add("-v");
641 }
642 argVals.addAll(Arrays.asList(pid, traceFile.getAbsolutePath()));
643 if (cmdArgs != null) {
644 argVals.addAll(Arrays.asList(cmdArgs));
645 }
646 if (Files.exists(Paths.get(javaHome, "jmods"))) {
647 argVals.addAll(
648 1,
649 Arrays.asList("--add-exports", "jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED"));
650 }
651 ProcessBuilder pb = new ProcessBuilder(argVals);
652
653 pb.environment().remove("JAVA_TOOL_OPTIONS");
654 Process p = pb.start();
655
656 CountDownLatch l = new CountDownLatch(checkLines);
657
658 new Thread(
659 () -> {
660 try {
661 BufferedReader br =
662 new BufferedReader(
663 new InputStreamReader(p.getErrorStream(), StandardCharsets.UTF_8));
664
665 String line = null;
666 while ((line = br.readLine()) != null) {
667 System.out.println("[btrace err] " + line);
668 if (line.contains("Server VM warning")
669 || line.contains("XML libraries not available")
670 || line.contains("Connection reset")) {
671 // skip JVM generated warnings

Callers 1

testMethod · 0.95

Calls 12

locateTraceMethod · 0.95
getPropertyMethod · 0.80
addAllMethod · 0.80
addMethod · 0.65
toStringMethod · 0.45
getMethod · 0.45
removeMethod · 0.45
startMethod · 0.45
printlnMethod · 0.45
containsMethod · 0.45
startsWithMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected