...
1
2
3
4
5
6
7
8
9 package raw
10
11 import (
12 "strconv"
13 "strings"
14
15 "golang.org/x/exp/trace/internal/event"
16 "golang.org/x/exp/trace/internal/version"
17 )
18
19
20
21
22
23
24 type Event struct {
25 Version version.Version
26 Ev event.Type
27 Args []uint64
28 Data []byte
29 }
30
31
32
33
34
35 func (e *Event) String() string {
36 spec := e.Version.Specs()[e.Ev]
37
38 var s strings.Builder
39 s.WriteString(spec.Name)
40 for i := range spec.Args {
41 s.WriteString(" ")
42 s.WriteString(spec.Args[i])
43 s.WriteString("=")
44 s.WriteString(strconv.FormatUint(e.Args[i], 10))
45 }
46 if spec.IsStack {
47 frames := e.Args[len(spec.Args):]
48 for i := 0; i < len(frames); i++ {
49 if i%4 == 0 {
50 s.WriteString("\n\t")
51 } else {
52 s.WriteString(" ")
53 }
54 s.WriteString(frameFields[i%4])
55 s.WriteString("=")
56 s.WriteString(strconv.FormatUint(frames[i], 10))
57 }
58 }
59 if e.Data != nil {
60 s.WriteString("\n\tdata=")
61 s.WriteString(strconv.Quote(string(e.Data)))
62 }
63 return s.String()
64 }
65
View as plain text