GithubHelp home page GithubHelp logo

isabella232 / stack-4 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from facebookarchive/stack

0.0 0.0 0.0 13 KB

Package stack provides utilities to capture and pass around stack traces.

License: Other

Go 100.00%

stack-4's Introduction

stack

-- import "github.com/facebookgo/stack"

Package stack provides utilities to capture and pass around stack traces.

This is useful for building errors that know where they originated from, to track where a certain log event occured and so on.

The package provides stack.Multi which represents a sequence of stack traces. Since in Go we return errors they don't necessarily end up with a single useful stack trace. For example an error may be going thru a channel across goroutines, in which case we may want to capture a stack trace in both (or many) goroutines. stack.Multi in turn is made up of stack.Stack, which is a set of stack.Frames. Each stack.Frame contains the File/Line/Name (function name). All these types implement a pretty human readable String() function.

The GOPATH is stripped from the File location. Look at the StripGOPATH function on instructions for how to embed to GOPATH into the binary for when deploying to production and the GOPATH environment variable may not be set. The package name is stripped from the Name of the function since it included in the File location.

Usage

func StripGOPATH

func StripGOPATH(f string) string

StripGOPATH strips the GOPATH prefix from the file path f. In development, this will be done using the GOPATH environment variable. For production builds, where the GOPATH environment will not be set, the GOPATH can be included in the binary by passing ldflags, for example:

GO_LDFLAGS="$GO_LDFLAGS -X github.com/facebookgo/stack.gopath $GOPATH"
go install "-ldflags=$GO_LDFLAGS" my/pkg

func StripPackage

func StripPackage(n string) string

StripPackage strips the package name from the given Func.Name.

type Frame

type Frame struct {
	File string
	Line int
	Name string
}

Frame identifies a file, line & function name in the stack.

func Caller

func Caller(skip int) Frame

Caller returns a single Frame for the caller. The argument skip is the number of stack frames to ascend, with 0 identifying the caller of Callers.

func (Frame) String

func (f Frame) String() string

String provides the standard file:line representation.

type Multi

type Multi struct {
}

Multi represents a number of Stacks. This is useful to allow tracking a value as it travels thru code.

func CallersMulti

func CallersMulti(skip int) *Multi

CallersMulti returns a Multi which includes one Stack for the current callers. The argument skip is the number of stack frames to ascend, with 0 identifying the caller of CallersMulti.

func (*Multi) Add

func (m *Multi) Add(s Stack)

Add the given Stack to this Multi.

func (*Multi) AddCallers

func (m *Multi) AddCallers(skip int)

AddCallers adds the Callers Stack to this Multi. The argument skip is the number of stack frames to ascend, with 0 identifying the caller of Callers.

func (*Multi) Stacks

func (m *Multi) Stacks() []Stack

Stacks returns the tracked Stacks.

func (*Multi) String

func (m *Multi) String() string

String provides a human readable multi-line stack trace.

type Stack

type Stack []Frame

Stack represents an ordered set of Frames.

func Callers

func Callers(skip int) Stack

Callers returns a Stack of Frames for the callers. The argument skip is the number of stack frames to ascend, with 0 identifying the caller of Callers.

func (Stack) String

func (s Stack) String() string

String provides the standard multi-line stack trace.

stack-4's People

Contributors

daaku avatar frairon avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.