var _stackPool … type Stack … type Depth … const First … const Full … // Capture captures a stack trace of the specified depth, skipping // the provided number of frames. skip=0 identifies the caller of // Capture. // // The caller must call Free on the returned stacktrace after using it. func Capture(skip int, depth Depth) *Stack { … } // Free releases resources associated with this stacktrace // and returns it back to the pool. func (st *Stack) Free() { … } // Count reports the total number of frames in this stacktrace. // Count DOES NOT change as Next is called. func (st *Stack) Count() int { … } // Next returns the next frame in the stack trace, // and a boolean indicating whether there are more after it. func (st *Stack) Next() (_ runtime.Frame, more bool) { … } // Take returns a string representation of the current stacktrace. // // skip is the number of frames to skip before recording the stack trace. // skip=0 identifies the caller of Take. func Take(skip int) string { … } type Formatter … // NewFormatter builds a new Formatter. func NewFormatter(b *buffer.Buffer) Formatter { … } // FormatStack formats all remaining frames in the provided stacktrace -- minus // the final runtime.main/runtime.goexit frame. func (sf *Formatter) FormatStack(stack *Stack) { … } // FormatFrame formats the given frame. func (sf *Formatter) FormatFrame(frame runtime.Frame) { … }