// 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 runtime.Stack. func PrintStack() { os.Stderr.Write(Stack()) } // Stack returns a formatted stack trace of the goroutine that calls it. // It calls [runtime.Stack] with a large enough buffer to capture the entire trace. 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)) } }