Récupération et stockage des traces de pile des paniques
Alors que les paniques génèrent des traces de pile informatives sur la sortie standard, les informations peuvent être perdues lors de la récupération après la panique en utilisant récupérer(). Cependant, il est possible de capturer et de stocker le stacktrace pour un débogage amélioré.
Le package runtime/debug offre une solution pour récupérer les stacktraces. Voici comment il peut être utilisé :
package main import ( "fmt" "runtime/debug" ) func main() { // Function to recover from panics and capture stacktraces defer func() { if r := recover(); r != nil { // Convert the stacktrace bytes into a string fmt.Println("Stacktrace from panic: \n" + string(debug.Stack())) } }() var mySlice []int // Generate panic j := mySlice[0] fmt.Printf("Hello, playground %d", j) }
Cette solution imprime la trace de pile suivante :
Stacktrace from panic: goroutine 1 [running]: runtime/debug.Stack(0x1042ff18, 0x98b2, 0xf0ba0, 0x17d048) /usr/local/go/src/runtime/debug/stack.go:24 +0xc0 main.main.func1() /tmp/sandbox973508195/main.go:11 +0x60 panic(0xf0ba0, 0x17d048) /usr/local/go/src/runtime/panic.go:502 +0x2c0 main.main() /tmp/sandbox973508195/main.go:16 +0x60
En tirant parti du package runtime/debug, vous pouvez capturer et stocker efficacement les traces de pile, permettant ainsi plus débogage complet lorsque des paniques surviennent dans vos applications Go.
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!