本文介紹如何打印調用堆棧進行go代碼的調試。
打印堆棧使用的runtime package中的Stack()函數
func Stack(buf []byte, all bool) intStack formats a stack trace of the calling goroutine into buf and returns the number of bytes written to buf. If all is true, Stack formats stack traces of all other goroutines into buf after the trace for the current goroutine.
example
package mainimport ( "runtime" "time" "fmt")func main() { go power1() for { time.Sleep(time.Duration(1)*time.Minute) }}func power1(){ var buf [1024]byte fmt.Println("power1.....") n := runtime.Stack(buf[:], true) fmt.Println(string(buf[:]), n)}
輸出結果:
power1.....goroutine 5 [running]:main.power1()/home/lanyang/src/t.go:29 +0xeccreated by main.main/home/lanyang/src/t.go:14 +0x3c
goroutine 1 [sleep]:time.Sleep(0xdf8475800)/home/lanyang/src/t.go:59 +0x107main.main()/home/lanyang/src/t.go:17 +0x4f303
以上這篇go 代碼的調試---打印調用堆棧的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答