public static void capture()

in src/main/java/com/intellij/rt/debugger/agent/LogCaptureStorage.java [27:57]


    public static void capture(FileDescriptor fd, byte[] bytes, int off, int len) {
        if (!ENABLED || CAPTURING) return;
        CAPTURING = true;
        try {
            if (fd != FD_OUT && fd != FD_ERR) return;
            if (len == 0) return;

            List<StackTraceElement> regularStack = Arrays.asList(Thread.currentThread().getStackTrace());
            List<StackTraceElement> capturedStack = CaptureStorage.getCurrentCapturedStack(MAX_STACK_DEPTH - regularStack.size());

            String captured;
            try (ByteArrayOutputStream bas = new ByteArrayOutputStream();
                 DataOutputStream dos = new DataOutputStream(bas)) {
                dos.writeInt(len);
                dos.write(bytes, off, len);
                CaptureStorage.writeAsyncStackTraceToStream(regularStack, dos);
                if (capturedStack != null) {
                    CaptureStorage.writeAsyncStackTraceElementToStream(CaptureStorage.ASYNC_STACK_ELEMENT, dos);
                    CaptureStorage.writeAsyncStackTraceToStream(capturedStack, dos);
                }
                captured = bas.toString(StandardCharsets.ISO_8859_1.name());
            }

            save(captured);

        } catch (Exception e) {
            handleException(e);
        } finally {
            CAPTURING = false;
        }
    }