MCPcopy
hub / github.com/rs/zerolog / MarshalStack

Function MarshalStack

pkgerrors/stacktrace.go:46–82  ·  view source on GitHub ↗

MarshalStack implements pkg/errors stack trace marshaling. zerolog.ErrorStackMarshaler = MarshalStack

(err error)

Source from the content-addressed store, hash-verified

44//
45// zerolog.ErrorStackMarshaler = MarshalStack
46func MarshalStack(err error) interface{} {
47 type stackTracer interface {
48 StackTrace() errors.StackTrace
49 }
50 var sterr stackTracer
51 var ok bool
52 for err != nil {
53 sterr, ok = err.(stackTracer)
54 if ok {
55 break
56 }
57
58 u, ok := err.(interface {
59 Unwrap() error
60 })
61 if !ok {
62 return nil
63 }
64
65 err = u.Unwrap()
66 }
67 if sterr == nil {
68 return nil
69 }
70
71 st := sterr.StackTrace()
72 s := &state{}
73 out := make([]map[string]string, 0, len(st))
74 for _, frame := range st {
75 out = append(out, map[string]string{
76 StackSourceFileName: frameField(frame, s, 's'),
77 StackSourceLineName: frameField(frame, s, 'd'),
78 StackSourceFunctionName: frameField(frame, s, 'n'),
79 })
80 }
81 return out
82}

Callers

nothing calls this directly

Calls 3

StackTraceMethod · 0.95
frameFieldFunction · 0.85
UnwrapMethod · 0.65

Tested by

no test coverage detected