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;
}
}