Sorry about the top-posting. That makes sense, thanks. I agree perf can provide visibility into which BPF programs are running, including tail-called ones.
What I am still unsure about is packet-level / structured-data observability. My use case is closer to xdpdump-style debugging, where I want to inspect packet-related context from specific XDP leaf programs in a live pipeline. That feels harder to express with perf alone, so I am trying to understand what the preferred direction would be for that kind of use case in tailcall-heavy XDP deployments.

