/** * Gather backtrace data for a normal Ruby trace. * * @param context * @param nativeException * @return */ public BacktraceData getBacktraceData(ThreadContext context, boolean nativeException) { BacktraceData data = getBacktraceData(context, Thread.currentThread().getStackTrace(), nativeException); context.runtime.incrementBacktraceCount(); if (RubyInstanceConfig.LOG_BACKTRACES) logBacktrace(data.getBacktrace(context.runtime)); return data; }
/** * Gather backtrace data for an integrated trace if the current gather type is "NORMAL", otherwise use the * current gather type. * * @param context * @param javaTrace * @return */ public BacktraceData getIntegratedBacktraceData(ThreadContext context, StackTraceElement[] javaTrace) { Gather useGather = this; if (useGather == NORMAL) { useGather = INTEGRATED; } BacktraceData data = useGather.getBacktraceData(context, javaTrace, false); context.runtime.incrementBacktraceCount(); if (RubyInstanceConfig.LOG_BACKTRACES) logBacktrace(data.getBacktrace(context.runtime)); return data; }
/** * Gather backtrace data for an integrated trace if the current gather type is "NORMAL", otherwise use the * current gather type. * * @param context * @param javaTrace * @return */ public BacktraceData getIntegratedBacktraceData(ThreadContext context, StackTraceElement[] javaTrace) { Gather useGather = this; if (useGather == NORMAL) { useGather = INTEGRATED; } BacktraceData data = useGather.getBacktraceData(context, javaTrace); context.runtime.incrementBacktraceCount(); if (RubyInstanceConfig.LOG_BACKTRACES) logBacktrace(context.runtime, data.getBacktrace(context.runtime)); return data; }
/** * Gather backtrace data for an integrated trace if the current gather type is "NORMAL", otherwise use the * current gather type. * * @param context * @param javaTrace * @return */ public BacktraceData getIntegratedBacktraceData(ThreadContext context, StackTraceElement[] javaTrace) { Gather useGather = this; if (useGather == NORMAL) { useGather = INTEGRATED; } BacktraceData data = useGather.getBacktraceData(context, javaTrace, false); context.runtime.incrementBacktraceCount(); if (RubyInstanceConfig.LOG_BACKTRACES) logBacktrace(data.getBacktrace(context.runtime)); return data; }
/** * Gather backtrace data for an integrated trace if the current gather type is "NORMAL", otherwise use the * current gather type. * * @param context * @param javaTrace * @return */ public BacktraceData getIntegratedBacktraceData(ThreadContext context, StackTraceElement[] javaTrace) { Gather useGather = this; if (useGather == NORMAL) { useGather = INTEGRATED; } BacktraceData data = useGather.getBacktraceData(context, javaTrace); context.runtime.incrementBacktraceCount(); if (RubyInstanceConfig.LOG_BACKTRACES) logBacktrace(context.runtime, data.getBacktrace(context.runtime)); return data; }
public RubyStackTraceElement[] gatherCallerBacktrace() { return Gather.CALLER.getBacktraceData(this, false).getBacktrace(runtime); }
public RubyStackTraceElement[] gatherCallerBacktrace() { return Gather.CALLER.getBacktraceData(this).getBacktrace(runtime); }
private static void dumpThread(Ruby ruby, RubyThread th, Gather gather, PrintWriter pw) { pw.println("Thread: " + th.getNativeThread().getName()); pw.println("Stack:"); ThreadContext tc = th.getContext(); if (tc != null) { RubyException exc = new RubyException(ruby, ruby.getRuntimeError(), "thread dump"); exc.setBacktraceData(gather.getBacktraceData(tc, th.getNativeThread().getStackTrace(), true)); pw.println(Format.MRI.printBacktrace(exc, false)); } else { pw.println(" [no longer alive]"); } pw.println(); }
private RubyStackTraceElement[] getFullTrace(Integer length, StackTraceElement[] stacktrace) { if (length != null && length == 0) return RubyStackTraceElement.EMPTY_ARRAY; return TraceType.Gather.CALLER.getBacktraceData(this, stacktrace).getBacktrace(runtime); }
private static void dumpThread(Ruby ruby, RubyThread th, Gather gather, PrintWriter pw) { pw.println("Thread: " + th.getNativeThread().getName()); pw.println("Stack:"); ThreadContext tc = th.getContext(); if (tc != null) { RubyException exc = new RubyException(ruby, ruby.getRuntimeError(), "thread dump"); exc.setBacktraceData(gather.getBacktraceData(tc, th.getNativeThread().getStackTrace())); pw.println(Format.MRI.printBacktrace(exc, false)); } else { pw.println(" [no longer alive]"); } pw.println(); }
private static void dumpThread(Ruby ruby, RubyThread th, Gather gather, PrintWriter pw) { pw.println("Thread: " + th.getNativeThread().getName()); pw.println("Stack:"); ThreadContext tc = th.getContext(); if (tc != null) { RubyException exc = new RubyException(ruby, ruby.getRuntimeError(), "thread dump"); exc.setBacktraceData(gather.getBacktraceData(tc, th.getNativeThread().getStackTrace(), true)); pw.println(Format.MRI.printBacktrace(exc, false)); } else { pw.println(" [no longer alive]"); } pw.println(); }
/** * Gather backtrace data for a normal Ruby trace. * * @param context * @param nativeException * @return */ public BacktraceData getBacktraceData(ThreadContext context, boolean nativeException) { BacktraceData data = getBacktraceData(context, Thread.currentThread().getStackTrace(), nativeException); context.runtime.incrementBacktraceCount(); if (RubyInstanceConfig.LOG_BACKTRACES) logBacktrace(data.getBacktrace(context.runtime)); return data; }
/** * Get an integrated Ruby/Java backtrace if the current Gather type is NORMAL * * @param context * @param javaTrace * @return */ public BacktraceData getIntegratedBacktrace(ThreadContext context, StackTraceElement[] javaTrace) { return gather.getIntegratedBacktraceData(context, javaTrace); }
/** * Get an integrated Ruby/Java backtrace if the current Gather type is NORMAL * * @param context * @param javaTrace * @return */ public BacktraceData getIntegratedBacktrace(ThreadContext context, StackTraceElement[] javaTrace) { return gather.getIntegratedBacktraceData(context, javaTrace); }
private static void dumpThread(Ruby ruby, RubyThread th, Gather gather, PrintWriter pw) { pw.println("Thread: " + th.getNativeThread().getName()); pw.println("Stack:"); ThreadContext tc = th.getContext(); if (tc != null) { RubyException exc = new RubyException(ruby, ruby.getRuntimeError(), "thread dump"); exc.setBacktraceData(gather.getBacktraceData(tc, th.getNativeThread().getStackTrace())); pw.println(Format.MRI.printBacktrace(exc, false)); } else { pw.println(" [no longer alive]"); } pw.println(); }
/** * Gather backtrace data for a normal Ruby trace. * * @param context * @return */ public BacktraceData getBacktraceData(ThreadContext context) { BacktraceData data = getBacktraceData(context, Thread.currentThread().getStackTrace()); context.runtime.incrementBacktraceCount(); if (RubyInstanceConfig.LOG_BACKTRACES) logBacktrace(context.runtime, data.getBacktrace(context.runtime)); return data; }
public RubyStackTraceElement[] gatherCallerBacktrace() { return Gather.CALLER.getBacktraceData(this).getBacktrace(runtime); }
/** * Get an integrated Ruby/Java backtrace if the current Gather type is NORMAL * * @param context * @param javaTrace * @return */ public BacktraceData getIntegratedBacktrace(ThreadContext context, StackTraceElement[] javaTrace) { return gather.getIntegratedBacktraceData(context, javaTrace); }
private RubyStackTraceElement[] getTraceSubset(int level, Integer length, StackTraceElement[] stacktrace) { runtime.incrementCallerCount(); if (length != null && length == 0) return new RubyStackTraceElement[0]; RubyStackTraceElement[] trace = TraceType.Gather.CALLER.getBacktraceData(this, stacktrace, false).getBacktrace(runtime); int traceLength = safeLength(level, length, trace); if (traceLength < 0) return null; trace = Arrays.copyOfRange(trace, level, level + traceLength); if (RubyInstanceConfig.LOG_CALLERS) TraceType.dumpCaller(trace); return trace; }
@Override public void prepareBacktrace(ThreadContext context) { // if it's null, use cause's trace to build a raw stack trace if (backtraceData == null) { backtraceData = TraceType.Gather.RAW.getBacktraceData(getRuntime().getCurrentContext(), cause.getStackTrace()); } }