Wie speichere ich Panic Stacktraces in Go?

DDD
Freigeben: 2024-11-19 16:14:02
Original
471 Leute haben es durchsucht

How to Store Panic Stacktraces in Go?

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
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage