// Copyright 2011 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Package debug contains facilities for programs to debug themselves while // they are running. package debug import ( "os" "runtime" ) // PrintStack prints to standard error the stack trace returned by Stack. func PrintStack() { os.Stderr.Write(Stack()) } // Stack returns a formatted stack trace of the goroutine that calls it. // For each routine, it includes the source line information and PC value, // then attempts to discover, for Go functions, the calling function or // method. func Stack() []byte { buf := make([]byte, 1024) for { n := runtime.Stack(buf, false) if n < len(buf) { return buf[:n] } buf = make([]byte, 2*len(buf)) } }