首頁 >後端開發 >Golang >如何取得詳細的堆疊追蹤來調試源自外部 Go 庫的錯誤?

如何取得詳細的堆疊追蹤來調試源自外部 Go 庫的錯誤?

Patricia Arquette
Patricia Arquette原創
2024-12-09 03:41:111025瀏覽

How Can I Get a Detailed Stack Trace to Debug Errors Originating in External Go Libraries?

取得指向實際錯誤來源的堆疊追蹤

在由於外部庫錯誤而發生恐慌的情況下,最好追溯錯誤到它在圖書館程式碼中的起源。雖然預設的 Go 堆疊追蹤僅指向恐慌行,但需要進行更深入的調查。

為了實現這一點,「error」套件提供了一個名為「stackTracer」的接口,可以存取錯誤的堆疊追蹤。透過包裝原始錯誤並實現此接口,可以發現錯誤的實際來源。

type stackTracer interface {
    StackTrace() errors.StackTrace
}

要從包裝的錯誤中檢索堆疊追蹤:

err, ok := err.(stackTracer)
if ok {
    stack := err.StackTrace()
    fmt.Println(stack)
}

此外,一些第三方函式庫提供了不同程度的錯誤處理功能功能:

  • eris:可讀的堆疊追蹤和靈活的格式。
  • go-errors/errors:新增對錯誤的堆疊追蹤支援Go.
  • palantir/stacktrace:將整合式風格的堆疊追蹤到Go 中。

以上是如何取得詳細的堆疊追蹤來調試源自外部 Go 庫的錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn