...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package driver
16
17 import (
18 "encoding/json"
19 "html/template"
20 "net/http"
21
22 "github.com/google/pprof/internal/report"
23 )
24
25
26 func (ui *webInterface) stackView(w http.ResponseWriter, req *http.Request) {
27
28 rpt, errList := ui.makeReport(w, req, []string{"svg"}, func(cfg *config) {
29 cfg.CallTree = true
30 cfg.Trim = false
31 cfg.Granularity = "filefunctions"
32 })
33 if rpt == nil {
34 return
35 }
36
37
38 stacks := rpt.Stacks()
39 b, err := json.Marshal(stacks)
40 if err != nil {
41 http.Error(w, "error serializing stacks for flame graph",
42 http.StatusInternalServerError)
43 ui.options.UI.PrintErr(err)
44 return
45 }
46
47 nodes := make([]string, len(stacks.Sources))
48 for i, src := range stacks.Sources {
49 nodes[i] = src.FullName
50 }
51 nodes[0] = ""
52
53 _, legend := report.TextItems(rpt)
54 ui.render(w, req, "stacks", rpt, errList, legend, webArgs{
55 Stacks: template.JS(b),
56 Nodes: nodes,
57 })
58 }
59
View as plain text