Heim > Backend-Entwicklung > Golang > Wie kann ich Stacktraces von Paniken in Go erfassen und speichern?

Wie kann ich Stacktraces von Paniken in Go erfassen und speichern?

Barbara Streisand
Freigeben: 2024-11-14 17:27:02
Original
707 Leute haben es durchsucht

How can I capture and store stacktraces from panics in Go?

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

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

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage