Maison > développement back-end > Golang > Comment stocker les traces de panique dans Go ?

Comment stocker les traces de panique dans Go ?

DDD
Libérer: 2024-11-19 16:14:02
original
540 Les gens l'ont consulté

How to Store Panic Stacktraces in Go?

Récupération et stockage des traces de pile de panique

Panics in Go produit des traces de pile précieuses qui fournissent des informations de débogage. Cependant, la récupération après une panique renvoie uniquement un message d'erreur manquant d'informations détaillées au niveau de la ligne.

Pour résoudre cette limitation, le package runtime/debug propose une solution. Voici comment stocker le stacktrace d'une panique en tant que variable :

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
}
Copier après la connexion

Sortie :

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
Copier après la connexion

Ce code montre comment capturer le stacktrace en cas de panique, en fournissant des détails ligne par ligne qui facilitent un débogage efficace.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal