diff options
| author | Paul Buetow <paul@buetow.org> | 2025-03-29 11:25:27 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-03-29 11:25:27 +0200 |
| commit | 8a34be1f4fffca90d74e2092c7bc5a6af02392c4 (patch) | |
| tree | f003dc1b8d95a31bf8d01c786e98a5a622ac43cd /internal/flags/flags.go | |
| parent | 5f1b3be8ac4013ac7cf5041de339317defeb75ce (diff) | |
fix
Diffstat (limited to 'internal/flags/flags.go')
| -rw-r--r-- | internal/flags/flags.go | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/internal/flags/flags.go b/internal/flags/flags.go index 7a77ae7..a85c838 100644 --- a/internal/flags/flags.go +++ b/internal/flags/flags.go @@ -11,16 +11,21 @@ import ( ) type Flags struct { - PidFilter int - TidFilter int - EventMapSize int - CommFilter string - PathFilter string - PprofEnable bool - FlamegraphEnable bool - Duration int + PidFilter int + TidFilter int + EventMapSize int + CommFilter string + PathFilter string + PprofEnable bool + Duration int + + // Tracepints flags TracepointsToAttach []*regexp.Regexp TracepointsToExclude []*regexp.Regexp + + // Flamegraph flags + FlamegraphEnable bool + FlamegraphName string // If set, enables new style iorData output, TODO: remove comment once old style collapsed format is retired } func New() (flags Flags) { @@ -33,20 +38,26 @@ func New() (flags Flags) { flag.StringVar(&flags.PathFilter, "path", "", "Path to filter for") flag.BoolVar(&flags.PprofEnable, "pprof", false, "Enable profiling") - flag.BoolVar(&flags.FlamegraphEnable, "flamegraph", false, "Enable flamegraph builder") tracepointsToAttach := flag.String("tps", "", "Comma separated list regexes for tracepoints to load") tracepointsToExclude := flag.String("tpsExclude", "", "Comma separated list regexes for tracepoints to exclude") + + flag.BoolVar(&flags.FlamegraphEnable, "flamegraph", false, "Enable flamegraph builder") + flag.StringVar(&flags.FlamegraphName, "name", "", "Name of the flamegraph data output") + flag.Parse() - flags.TracepointsToAttach = extractTracepointFlags(tracepointsToAttach) - flags.TracepointsToExclude = extractTracepointFlags(tracepointsToExclude) + flags.TracepointsToAttach = extractTracepointFlags(*tracepointsToAttach) + flags.TracepointsToExclude = extractTracepointFlags(*tracepointsToExclude) return flags } -func extractTracepointFlags(tracepoints *string) (regexes []*regexp.Regexp) { - for _, name := range strings.Split(*tracepoints, ",") { +func extractTracepointFlags(tracepoints string) (regexes []*regexp.Regexp) { + if len(tracepoints) == 0 { + return regexes + } + for _, name := range strings.Split(tracepoints, ",") { re, err := regexp.Compile(name) if err != nil { fmt.Println("Unable to compile regex", name, ": ", err) @@ -57,20 +68,25 @@ func extractTracepointFlags(tracepoints *string) (regexes []*regexp.Regexp) { return regexes } -func (flags Flags) AttachTracepoint(tracepointName string) bool { +func (flags Flags) ShouldIAttachTracepoint(tracepointName string) bool { for _, re := range flags.TracepointsToExclude { if re.MatchString(tracepointName) { + fmt.Println("Not attaching", tracepointName, "as excluded") return false } } if len(flags.TracepointsToAttach) == 0 { + fmt.Println("Attaching", tracepointName, "as none are explicitly incluced") return true } for _, re := range flags.TracepointsToAttach { if re.MatchString(tracepointName) { + fmt.Println("Attaching", tracepointName, "as included") return true } } + + fmt.Println("Not attaching", tracepointName, "as not includedd") return false } |
