go 输出栈信息
方式1:debug.Stack函数
调用runtime.Stack函数,无需指定参数,输出当前goroutine的栈信息。
源码在runtime/debug/stack.go中:
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))
}
}
方式2:runtime.Stack函数
参数是buf []byte和all bool(true时输出所有协程栈信息),返回值是栈信息字节数,推荐使用。