Go에서 패닉 스택트레이스를 저장하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-19 16:14:02
원래의
444명이 탐색했습니다.

How to Store Panic Stacktraces in Go?

패닉 스택트레이스 검색 및 저장

Go의 패닉은 디버깅 통찰력을 제공하는 귀중한 스택트레이스를 생성합니다. 그러나 패닉에서 복구하면 자세한 라인 수준 정보가 부족한 오류 메시지만 반환됩니다.

이러한 제한을 해결하기 위해 런타임/디버그 패키지는 솔루션을 제공합니다. 패닉 상태에서 스택 추적을 변수로 저장하는 방법은 다음과 같습니다.

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
}
로그인 후 복사

출력:

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
로그인 후 복사

이 코드는 패닉 발생 시 스택 추적을 캡처하는 방법을 보여줍니다. 효과적인 디버깅을 용이하게 하는 한 줄씩 자세히 설명합니다.

위 내용은 Go에서 패닉 스택트레이스를 저장하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿