StackFrame getStackFrameByID(long stackFrameID) { long[] offset = new long[] { startOffset }; while (offset[0] < endOffset) { long start = offset[0]; long frameID = readStackFrameTag(offset); if (frameID == stackFrameID) { return new StackFrame(this, start); } } return null; }
public StackTraceElement[] getStackTrace() { int stackTraceSerialNumber = getStackTraceSerialNumber(); if (stackTraceSerialNumber != 0) { StackTrace stackTrace = heap.getStackTraceSegment().getStackTraceBySerialNumber(stackTraceSerialNumber); if (stackTrace != null) { StackFrame[] frames = stackTrace.getStackFrames(); StackTraceElement[] stackElements = new StackTraceElement[frames.length]; for (int i=0;i<frames.length;i++) { StackFrame f = frames[i]; String className = f.getClassName(); String method = f.getMethodName(); String source = f.getSourceFile(); int number = f.getLineNumber(); if (number == StackFrame.NATIVE_METHOD) { number = -2; } else if (number == StackFrame.NO_LINE_INFO || number == StackFrame.UNKNOWN_LOCATION) { number = -1; } stackElements[i] = new StackTraceElement(className,method,source,number); } return stackElements; } } return null; }
StackFrame(StackFrameSegment segment, long offset) { super(offset); stackFrameSegment = segment; assert getHprofBuffer().get(offset) == HprofHeap.STACK_FRAME; }
String getMethodSignature() { return getStringByOffset(stackFrameSegment.methodSignatureIDOffset); }
String getMethodName() { return getStringByOffset(stackFrameSegment.methodIDOffset); }
public StackTraceElement[] getStackTrace() { int stackTraceSerialNumber = getStackTraceSerialNumber(); if (stackTraceSerialNumber != 0) { StackTrace stackTrace = heap.getStackTraceSegment().getStackTraceBySerialNumber(stackTraceSerialNumber); if (stackTrace != null) { StackFrame[] frames = stackTrace.getStackFrames(); StackTraceElement[] stackElements = new StackTraceElement[frames.length]; for (int i=0;i<frames.length;i++) { StackFrame f = frames[i]; String className = f.getClassName(); String method = f.getMethodName(); String source = f.getSourceFile(); int number = f.getLineNumber(); if (number == StackFrame.NATIVE_METHOD) { number = -2; } else if (number == StackFrame.NO_LINE_INFO || number == StackFrame.UNKNOWN_LOCATION) { number = -1; } stackElements[i] = new StackTraceElement(className,method,source,number); } return stackElements; } } return null; }
long getStackFrameID() { return getHprofBuffer().getID(fileOffset + stackFrameSegment.stackFrameIDOffset); }
String getSourceFile() { return getStringByOffset(stackFrameSegment.sourceIDOffset); }
StackFrame getStackFrameByID(long stackFrameID) { long[] offset = new long[] { startOffset }; while (offset[0] < endOffset) { long start = offset[0]; long frameID = readStackFrameTag(offset); if (frameID == stackFrameID) { return new StackFrame(this, start); } } return null; }
public StackTraceElement[] getStackTrace() { int stackTraceSerialNumber = getStackTraceSerialNumber(); if (stackTraceSerialNumber != 0) { StackTrace stackTrace = heap.getStackTraceSegment().getStackTraceBySerialNumber(stackTraceSerialNumber); if (stackTrace != null) { StackFrame[] frames = stackTrace.getStackFrames(); StackTraceElement[] stackElements = new StackTraceElement[frames.length]; for (int i=0;i<frames.length;i++) { StackFrame f = frames[i]; String className = f.getClassName(); String method = f.getMethodName(); String source = f.getSourceFile(); int number = f.getLineNumber(); if (number == StackFrame.NATIVE_METHOD) { number = -2; } else if (number == StackFrame.NO_LINE_INFO || number == StackFrame.UNKNOWN_LOCATION) { number = -1; } stackElements[i] = new StackTraceElement(className,method,source,number); } return stackElements; } } return null; }
int getLineNumber() { return getHprofBuffer().getInt(fileOffset + stackFrameSegment.lineNumberOffset); }
String getMethodSignature() { return getStringByOffset(stackFrameSegment.methodSignatureIDOffset); }
StackFrame getStackFrameByID(long stackFrameID) { long[] offset = new long[] { startOffset }; while (offset[0] < endOffset) { long start = offset[0]; long frameID = readStackFrameTag(offset); if (frameID == stackFrameID) { return new StackFrame(this, start); } } return null; }
private String getStringByOffset(long offset) { long stringID = getHprofBuffer().getID(fileOffset + offset); return stackFrameSegment.hprofHeap.getStringSegment().getStringByID(stringID); } }
String getMethodName() { return getStringByOffset(stackFrameSegment.methodIDOffset); }
String getClassName() { int classSerial = getHprofBuffer().getInt(fileOffset + stackFrameSegment.classSerialNumberOffset); LoadClass loadClass = stackFrameSegment.hprofHeap.getLoadClassSegment().getClassBySerialNumber(classSerial); return loadClass.getName(); }
String getMethodName() { return getStringByOffset(stackFrameSegment.methodIDOffset); }
StackFrame(StackFrameSegment segment, long offset) { super(offset); stackFrameSegment = segment; assert getHprofBuffer().get(offset) == HprofHeap.STACK_FRAME; }
String getSourceFile() { return getStringByOffset(stackFrameSegment.sourceIDOffset); }
StackFrame(StackFrameSegment segment, long offset) { super(offset); stackFrameSegment = segment; assert getHprofBuffer().get(offset) == HprofHeap.STACK_FRAME; }