...

Package stacktrace

import "go.uber.org/zap/internal/stacktrace"
Overview
Index

Overview ▾

Package stacktrace provides support for gathering stack traces efficiently.

func Take

func Take(skip int) string

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.

type Depth

Depth specifies how deep of a stack trace should be captured.

type Depth int
const (
    // First captures only the first frame.
    First Depth = iota

    // Full captures the entire call stack, allocating more
    // storage for it if needed.
    Full
)

type Formatter

Formatter formats a stack trace into a readable string representation.

type Formatter struct {
    // contains filtered or unexported fields
}

func NewFormatter

func NewFormatter(b *buffer.Buffer) Formatter

NewFormatter builds a new Formatter.

func (*Formatter) FormatFrame

func (sf *Formatter) FormatFrame(frame runtime.Frame)

FormatFrame formats the given frame.

func (*Formatter) FormatStack

func (sf *Formatter) FormatStack(stack *Stack)

FormatStack formats all remaining frames in the provided stacktrace -- minus the final runtime.main/runtime.goexit frame.

type Stack

Stack is a captured stack trace.

type Stack struct {
    // contains filtered or unexported fields
}

func Capture

func Capture(skip int, depth Depth) *Stack

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 (*Stack) Count

func (st *Stack) Count() int

Count reports the total number of frames in this stacktrace. Count DOES NOT change as Next is called.

func (*Stack) Free

func (st *Stack) Free()

Free releases resources associated with this stacktrace and returns it back to the pool.

func (*Stack) Next

func (st *Stack) Next() (_ runtime.Frame, more bool)

Next returns the next frame in the stack trace, and a boolean indicating whether there are more after it.