Panic Stacktraces abrufen und speichern
Panics in Go erzeugen wertvolle Stacktraces, die Debugging-Einblicke liefern. Bei der Wiederherstellung nach einer Panik wird jedoch nur eine Fehlermeldung zurückgegeben, die keine detaillierten Informationen auf Zeilenebene enthält.
Um diese Einschränkung zu beheben, bietet das Laufzeit-/Debugpaket eine Lösung. So können Sie den Stacktrace aus einer Panik als Variable speichern:
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 }
Ausgabe:
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
Dieser Code zeigt, wie der Stacktrace im Falle einer Panik erfasst wird Zeile für Zeile Details, die ein effektives Debuggen erleichtern.
Das obige ist der detaillierte Inhalt vonWie speichere ich Panic Stacktraces in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!