패닉 스택트레이스 검색 및 저장
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!