Stacktraces aus Panik abrufen und speichern
Während Panik informative Stacktraces zur Standardausgabe generiert, können die Informationen bei der Wiederherstellung nach der Panik verloren gehen genesen(). Es ist jedoch möglich, den Stacktrace für ein verbessertes Debugging zu erfassen und zu speichern.
Das runtime/debug-Paket bietet eine Lösung zum Abrufen von Stacktraces. So kann es verwendet werden:
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) }
Diese Lösung druckt den folgenden Stacktrace:
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
Durch die Nutzung des Laufzeit-/Debugpakets können Sie Stacktraces effektiv erfassen und speichern und so mehr ermöglichen umfassendes Debugging, wenn Paniken in Ihren Go-Anwendungen auftreten.
Das obige ist der detaillierte Inhalt vonWie kann ich Stacktraces von Paniken in Go erfassen und speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!