MCPcopy Create free account
hub / github.com/SeeFlowerX/stackplz / setupManager

Method setupManager

user/module/stack.go:48–100  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

46}
47
48func (this *MStack) setupManager() error {
49 maps := []*manager.Map{}
50 probes := []*manager.Probe{}
51
52 events_map := &manager.Map{
53 Name: "events",
54 }
55 maps = append(maps, events_map)
56
57 fork_probe := &manager.Probe{
58 Section: "raw_tracepoint/sched_process_fork",
59 EbpfFuncName: "tracepoint__sched__sched_process_fork",
60 }
61 probes = append(probes, fork_probe)
62
63 for i, uprobe_point := range this.mconf.StackUprobeConf.Points {
64 // stack hook 配置
65 sym := uprobe_point.Symbol
66 var stack_probe *manager.Probe
67 if sym == "" {
68 sym = util.RandStringBytes(8)
69 stack_probe = &manager.Probe{
70 Section: fmt.Sprintf("uprobe/stack_%d", i),
71 EbpfFuncName: fmt.Sprintf("probe_stack_%d", i),
72 AttachToFuncName: sym,
73 RealFilePath: uprobe_point.RealFilePath,
74 BinaryPath: uprobe_point.LibPath,
75 NonElfOffset: uprobe_point.NonElfOffset,
76 // 这个是相对于库文件基址的偏移
77 UAddress: uprobe_point.Offset,
78 }
79 } else {
80 stack_probe = &manager.Probe{
81 Section: fmt.Sprintf("uprobe/stack_%d", i),
82 EbpfFuncName: fmt.Sprintf("probe_stack_%d", i),
83 AttachToFuncName: sym,
84 RealFilePath: uprobe_point.RealFilePath,
85 BinaryPath: uprobe_point.LibPath,
86 NonElfOffset: uprobe_point.NonElfOffset,
87 // 这个是相对于符号的偏移
88 UprobeOffset: uprobe_point.Offset,
89 }
90 }
91 this.logger.Printf("idx:%d %s", i, uprobe_point.String())
92 probes = append(probes, stack_probe)
93 }
94
95 this.bpfManager = &manager.Manager{
96 Probes: probes,
97 Maps: maps,
98 }
99 return nil
100}
101
102func (this *MStack) setupManagerOptions() {
103 // 对于没有开启 CONFIG_DEBUG_INFO_BTF 的加载额外的 btf.Spec

Callers 1

startMethod · 0.95

Calls 2

RandStringBytesFunction · 0.92
StringMethod · 0.65

Tested by

no test coverage detected