Récupération et stockage des traces de pile de panique
Panics in Go produit des traces de pile précieuses qui fournissent des informations de débogage. Cependant, la récupération après une panique renvoie uniquement un message d'erreur manquant d'informations détaillées au niveau de la ligne.
Pour résoudre cette limitation, le package runtime/debug propose une solution. Voici comment stocker le stacktrace d'une panique en tant que variable :
package main import ( "fmt" "runtime/debug" ) func main() { defer func() { if r := recover(); r != nil { stacktrace := string(debug.Stack()) fmt.Println("Stacktrace from panic:", stacktrace) } }() var mySlice []int j := mySlice[0] // panic fmt.Printf("Hello, playground %d", j) // unreachable code }
Sortie :
Stacktrace from panic: goroutine 1 [running]: runtime/debug.Stack(0x1042ff18, 0x98b2, 0x17d048, 0x17d1c0) /usr/local/go/src/runtime/debug/stack.go:24 +0xc0 main.main.func1() /tmp/sandbox973508195/main.go:11 +0x60 panic(0x17d048, 0x17d1c0) /usr/local/go/src/runtime/panic.go:665 +0x260 main.main() /tmp/sandbox973508195/main.go:16 +0x60
Ce code montre comment capturer le stacktrace en cas de panique, en fournissant des détails ligne par ligne qui facilitent un débogage efficace.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!